【发布时间】:2010-12-22 10:46:17
【问题描述】:
我正在寻找程序中的内存泄漏。
我把它缩小到一些没有被调用的析构函数。但是,我不知道为什么:
class CMain : public CList {
public:
CMain();
virtual ~CMain();
...
}
class CList : public CProc {
public:
CList();
virtual ~CList();
...
}
/* some code and a main func here */
CMain *pMain = new CMain();
/* some more code here */
delete pMain;
CMain 可以很好地释放,但永远不会调用 ~CList()。 CList 的所有父类也都有虚拟析构函数。
你有什么提示为什么 CList 的析构函数从未被调用?
【问题讨论】:
-
当你说
CMain gets deallocated just fine时,你的意思是CMain::~CMain被执行但CList::~CList没有被执行?如果是这样,你如何销毁对象 - 使用delete o;? -
你怎么知道没有调用特定的析构函数?
-
@sharptooth:我在析构函数中放了一个断点和一些控制台输出。
标签: c++ destructor