我有下面的代碼,它總是有內存泄漏請幫幫我。繼承刪除內存
謝謝, 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