vs2017 如何定位C++内存泄漏
2018-06-17 21:12:07来源:未知 阅读 ()
定位内存泄漏是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
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 如何0基础学习C/C++? 2020-06-06
- C++ new初始化与定位new运算符 2020-05-22
- 定位new表达式与显式调用析构函数 2020-04-20
- 标准输入重定向到文件后,如何连续读入,如何判断标准输入流 2020-03-20
- 手把手教你如何玩转CLion 2020-02-06
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash