这几天在.Net中写MFC程序,DEBUG时退出对话框后在输出窗口有下面的一段信息
Detected memory leaks!
Dumping objects ->
g:/playfinalsoundusb2/2dialogdlg.cpp(144) : {94} client block at 0x00035B80, subtype c0, 264 bytes long.
a CTextPlayer object at $00035B80, 264 bytes long
g:/playfinalsoundusb2/2dialogdlg.cpp(138) : {75} client block at 0x00035550, subtype c0, 236 bytes long.
a CMediaPlayer object at $00035550, 236 bytes long
Object dump complete.
一直没去在意这一段错误的信息,晚上的时候再认真看一下,原来是内存泄露的调试信息,赶紧看一下程序,才发现自己在delete前的if判断中把判断条件写错了,狂晕。。。赶紧改回来。
查了一下文章,在.cpp文件中进行以下定义后(自动生成),在DEBUG时就会进行内存泄露的检查了。
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
在非MFC程序中可在程序的入口处加入以下代码进行内存泄露检测:(文章中看到的,未测试)
int tmpFlag = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG );
tmpFlag |= _CRTDBG_LEAK_CHECK_DF;
_CrtSetDbgFlag( tmpFlag );
刚开始正式的进行VC++的编程,正在不断学习中。。。。