我有下面的代码,它总是有内存泄漏,请帮助我。
谢谢, 安卡塔
class ABCD
{
public:
ABCD(void);
~ABCD(void);
CString tem1;
CString tem2;
};
class CDE :
public ABCD
{
public:
CDE(void);
~CDE(void);
CString tem;
};
void main()
{
CList<ABCD*> m;
CDE *a = new CDE();
a->tem1 = "AAA";
a->tem2 ="BBB";
a->tem ="CCC";
m.AddTail(a);
ABCD *b = m.GetTail();
delete b;
}
最佳答案
类 ABCD 的析构函数不是虚拟的,因此通过将指针转换为基类类型,它不会调用派生类的析构函数,因此不会释放在 CDE 中分配的内存。
关于c++ - 删除继承中的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5119495/