c++ - 删除继承中的内存

标签 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;   
}

最佳答案

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

关于c++ - 删除继承中的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5119495/

相关文章:

c++ - C++结合从一张照片中裁剪的图像

c++ - 为什么从 DLL 调用时 boost::wave::context 构造函数会死锁?

c++ - DLL 互操作/有趣的错误

C++套接字流api

c++ - 输入验证无限循环C++

c++ - 使用 CMAKE 如何使用 CHECK_LIBRARY_EXISTS 来检查 C++ 库?

java - NDK 功能不起作用

c++ - 我在计算带有静态变量的对象总数的程序中出错

c++ - 尝试使用头文件

c++ - 预处理器的奇怪错误