删除继承中的内存

Ank*_*ata 1 c++

我有下面的代码,它总是有内存泄漏请帮帮我.

谢谢,安卡塔


 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;   
}
Run Code Online (Sandbox Code Playgroud)

Eri*_*tin 7

类ABCD的析构函数不是虚拟的,因此通过将指针转换为基类类型,它不会调用派生类的析构函数,因此不会释放CDE中分配的内存.