vs2017 如何定位C++内存泄漏

2018-02-23 07:32:53来源:cnblogs.com作者:zhangzheng08pku人点击

分享

定位内存泄漏是C++的一个棘手问题,可行的方法之一如下:

//在主函数文件中加入如下代码#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();      //_CrtSetBreakAlloc(这里有第一遍注释掉, 第二遍再执行);          自己的代码  }  

在debug模式下,在输出中可以看到如下信息:

请注意大括号{}中的内容,此处是{156},这就是程序可能内存泄露的地方。

将上面注释的代码加入,并将大括号中的数字填入,就可以让程序停在内存泄漏的地方。

如下,这里我让程序停在156处:

//在主函数文件中加入如下代码#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();      _CrtSetBreakAlloc(156);          自己的代码  }  

参考:https://www.cnblogs.com/luruiyuan/p/6916634.html

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台