首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC中在跟踪内存泄露时如何重载operator delete

2012-05-15 
MFC中在跟踪内存泄露时怎么重载operator delete在下面这段宏中,只重载了operator new,不知道怎么去重载ope

MFC中在跟踪内存泄露时怎么重载operator delete
在下面这段宏中,只重载了operator new,不知道怎么去重载operator delete?

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#define new DEBUG_NEW
#endif

[解决办法]
单单为了这个目的,不用重载operator delete操作符。
这样定义就是为了在DEBUG模式下检测new了以后没有delete的。

当在debug模式下时,分配内存时的new被替换成DEBUG_NEW,而这个DEBUG_NEW不仅要传入内存块的大小,还要传入源文件名和行号。当发生内存泄漏时,在调试模式下可以定位到该问题代码处。若删掉该句,就不能进行定位。release版本下的new就是简单的new,不带文件名和行号。


[解决办法]

探讨
如果不重载operator delete,怎么知道内存块new了以后被delete了?

引用:
单单为了这个目的,不用重载operator delete操作符。
这样定义就是为了在DEBUG模式下检测new了以后没有delete的。
当在debug模式下时,分配内存时的new被替换成DEBUG_NEW,而这个DEBUG_NEW不仅要传入内存块的大小,还要传入源文件名和行……

[解决办法]
MFC也有重载operatod delete.
afx.h
[解决办法]
看看这篇文章
http://wenku.baidu.com/view/3379ce1b964bcf84b9d57b32.html
文件名和行号是单独维护的
不用delete来释放

热点排行