我有下面的代码,它总是有内存泄漏请帮帮我。继承删除内存
谢谢, Ankata
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;
}
'它总是有记忆'是什么意思?此外,你还没有显示你的类的定义,只有声明。 – birryree 2011-02-25 16:09:36
我不明白“它总是有记忆”是什么意思。请澄清这个问题。这段代码有很多错误,但并不全是,所以很难提出具体的建议。 – 2011-02-25 16:11:15
CDE(tem)中的CString没有被释放?您需要在ABCD和CDE类上使用虚拟析构函数。在GetTail()的最后两行中,删除将调用ABCD析构函数而不是CDE析构函数。使析构函数虚拟将解决这个问题。 – 2011-02-25 16:12:28