本文章介绍内存泄漏的问题,包括两块内容:
1、如何查看是否存在内存泄露?
#include <stdlib.h>
#include <crtdbg.h>
#ifdef _DEBUG
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
#endif
void EnableMemLeakCheck()
{
int tmpFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
tmpFlag |= _CRTDBG_LEAK_CHECK_DF;
_CrtSetDbgFlag(tmpFlag);
}
//
using namespace std;
int main(){
EnableMemLeakCheck();
自己的函数
}
如果存在内存泄漏,则会出现如下输出:
上面花括号里面的编号{149}可以用于定位内存泄漏的地方,定位方法如下:
2、如何定位到内存泄漏的地方?
在代码块中加入【_CrtSetBreakAlloc(XXX);】,XXX里面就是上面输出的内存泄漏的编号,将该语句嵌入到上面函数中即下面代码:
int main(){
EnableMemLeakCheck();
_CrtSetBreakAlloc(149);
自己的函数
}
此实再次运行该函数,就会在内存泄漏的地方中止程序。