文档章节

vs 2017/2015/2013 如何定位C++内存泄漏

o
 osc_pn11u1x9
发布于 2018/08/06 10:53
字数 252
阅读 12
收藏 0
c++

定位内存泄漏是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 模式下,可以看到如下信息:

 此时我们注意大括号的内容,这就是可以我们的程序内存泄漏的地方。

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

如下,这里我们让程序停在 556 处

复制代码
//在主函数文件中加入如下代码

#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(556);  
        自己的代码  
}
复制代码

参考:http://blog.csdn.net/dyx810601/article/details/52092835

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

在云函数 SCF 里为 Next.js 跑 SSR

很多时候我们都希望首屏速度快,SEO 友好,那么相比于客户端渲染,SSR 渲染将是这方面的优势。Next.js、Nuxt.js 都是 SSR 框架。本篇文章将介绍 Next.js。 通常我们在部署 SSR 的时候,会担心...

腾讯云Serverless
51分钟前
19
0
一文带你初窥软件测试行业

三大原始问题一——软件测试是什么? 在一定条件下对软件系统进行审核、运行、评估,检验软件系统是否满足规定需求或者找出预期结果与实际结果之间的差别。为软件产品的质量和评价提供依据。...

a伟正是在下
59分钟前
17
0
如何避免APK文件的反向工程? - How to avoid reverse engineering of an APK file?

问题: I am developing a payment processing app for Android, and I want to prevent a hacker from accessing any resources, assets or source code from the APK file. 我正在开发适用......

富含淀粉
今天
13
0
python 抓取 微信公众号文章

1、下载 Fiddler 安装 具体操作传送门 2、第一步已完成,入门开始吧 首先确保有微信客户端(推荐PC,移动端会多一些操作) 启动微信、Fiddler ,然后找到需要抓取的公众号(还是关注一下吧,...

acclea
今天
9
0
JS深拷贝

let arr1 = [1, 2, 3, 4, { name: 'hh'}]/浅克隆****/// 1,展开运算符let arr2 = [...arr1]// 2.splicelet arr3 = arr1.splice(0)/深克隆****/// 1.基...

何祯粮
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部