Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 虚拟解构器-内存泄漏_C++_Memory Leaks - Fatal编程技术网

C++ 虚拟解构器-内存泄漏

C++ 虚拟解构器-内存泄漏,c++,memory-leaks,C++,Memory Leaks,现在我们必须创建类X(作为基类)和类Y(作为派生类)。它们都使用整数指针来保存不同大小的分配 class X { int *p; public: X() {p=new int[2];} ~X() {delete[] p;} }; class Y : public X { int *q; public: Y() {q=new int[4];} ~Y() {delete[] q;} }; 让我们在一个简单的循

现在我们必须创建
类X
(作为基类)和
类Y
(作为派生类)。它们都使用整数指针来保存不同大小的分配

class X
{
  int *p;
  public:
         X() {p=new int[2];}
         ~X() {delete[] p;}
};

class Y : public X {
  int *q;
  public:
         Y() {q=new int[4];}
         ~Y() {delete[] q;}
};
让我们在一个简单的循环中进行尝试:

for(int i=0;i<8;i++){X *ptr =new Y; delete ptr;}

for(int i=0;i此循环的每次执行

for(int i=0;i<8;i++){X *ptr =new Y; delete ptr;}
为此:

virtual ~X() {delete[] p;}

我相信术语“析构函数”是常用的,而不是“解构函数”是一个关于何时/何地使用虚拟析构函数的近似库,这个问题就是其中之一。这段代码比内存泄漏有更大的问题。感谢您尝试参考问答,但这以前已经做过
virtual ~X() {delete[] p;}