vs调试c语言检查内存泄露,VisualStudio中检查内存泄露方法

项目工程中存在内存泄露,被折磨了一晚上,终于查了出来,因为之前没有相关的经验,还比较生疏,在此记录下来,方便以后查找。

对于malloc出的内存的检测方法

这篇文章中详细地记录了从检查到找到确定位置到修复的方法,这里不再赘述。但是这是针对于C语言中的malloc方法的,C++中不再推荐使用malloc,取而代之的是new,如果按照这种方法的话,可以检测出内存泄露,但是不能确定到具体的位置。

对于new方法分配的内存的检查

这里分享一些C++中检测内存泄漏的技巧,与上面的方法不同的是,我们要多定义一个宏命令:#define _CRTDBG_MAP_ALLOC_NEW,部分代码如下:

#define _CRTDBG_MAP_ALLOC

#define _CRTDBG_MAP_ALLOC_NEW

#include

这几个是必须的头文件和宏定义,之后在工程出口添加:

_CrtDumpMemoryLeaks();

运行后”输出”窗口会显示内存泄露信息:

aa5994495096a2d2af44b8ddaf77c765.bmp

但是这里的文件位置还不是准确的,指向的是crtdbg.h这个头文件,这里可以用到一个小技巧:双击文件跳转到对应行,添加断点,添加条件,当new的空间大小等于”输出”窗口所显示的空间大小时,触发断点。如图所示:

bf7496a30c71828669fb44ac195d24a7.bmp

触发断点后,在“调用堆栈”里就可以看到具体是哪里申请的内存了:

c75a53548115d5ecb10d26e41450c8de.bmp

当然,这只是一种“歪门邪道”,因为如果泄露的内存大小是个很常见的数字,比如8bit,4bit之类,这种方法就没用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值