MFC中在跟踪内存泄露时如何重载operator delete
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,不带文件名和行号。
------解决方案--------------------
------解决方案--------------------
MFC也有重载operatod delete.
afx.h
------解决方案--------------------
看看这篇文章
http://wenku.baidu.com/view/3379ce1b964bcf84b9d57b32.html
文件名和行号是单独维护的
不用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,不带文件名和行号。
------解决方案--------------------
------解决方案--------------------
MFC也有重载operatod delete.
afx.h
------解决方案--------------------
看看这篇文章
http://wenku.baidu.com/view/3379ce1b964bcf84b9d57b32.html
文件名和行号是单独维护的
不用delete来释放