VC 内存泄露查找

 VC工程有时候忘记释放使用NEW 关键字分配的资源,调试工程退出时提示:

Detected memory leaks!
Dumping objects ->
XXXXXX.cpp(19) :

{68} client block at 0x003F2D48, subtype c0, 64 bytes long.
a CDynLinkLibrary object at $003F2D48, 64 bytes long
{66} client block at 0x003F5F30, subtype c0, 64 bytes long.
a CDynLinkLibrary object at $003F5F30, 64 bytes long
{64} client block at 0x003F5DF0, subtype c0, 64 bytes long.
a CDynLinkLibrary object at $003F5DF0, 64 bytes long

上面提示说明了程序在{68},{66},{64}三个地方分配的资源没有被释放,我们使用如下方法可以把没有被释放的地方找出来

把如下代码放在程序的最开始地方(如构造函数),

运行程序后,程序会跳转到断点调试处(选择中断),

 

此时你打开“调用堆栈”窗口,即可找到 内存泄露之处

 

 泄漏检测代码如下:

_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);
_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_DEBUG);
_CrtSetBreakAlloc(629);//629为出错处地址
_CrtDumpMemoryLeaks();
 
//  写在后面:
//  关于内存泄漏检测,有一个Visual Leak Detector ,按照它的介绍的确很不错,可以直接具体到代码行指出内存泄漏,
 //但是个人使用了一下,发现debug的速度太慢了,不知道是不是我个人程序的问题.......
 //像上面的泄漏,我用CrtSetBreakAlloc这种简单的方法就足够了....

详细说明请参考以下连接,

http://blog.csdn.net/running_j/article/details/52091508

http://blog.csdn.net/xiliang_pan/article/details/37693125

http://www.cnblogs.com/phinecos/archive/2009/10/29/1592604.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值