1
现在我们必须创建class X
(作为基类)和class 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;}
是什么原因导致内存泄漏那里,我们能做些什么来解决这个问题?
我相信术语 “析构函数” 是常用的,而不是 “解构” – Slava
[**这个问题**](HTTPS:/ /stackoverflow.com/questions/461203/when-to-use-virtual-destructors)是何时/何处使用虚拟破坏者的近库,这个问题的案例就是其中之一。 – WhozCraig
此代码具有比内存泄漏更大的问题。 –