内存泄漏调试(1)——CRT

原创文章,转载请注明出处


目录


内存泄漏

内存泄漏的简单定义是没有正确的释放已经分配的内存,这在C/C++程序中是一个很难检测的bug;一块较小的内存泄漏可能很容易被忽视,但如果内存泄漏的现象不断积累,后果可能导致程序的崩溃,甚至还会影响到其他程序的运行,所以内存泄漏的问题值得重视。一方面需要有良好的编程习惯,但即使是最优秀的程序员也不能保证所写的代码里没有内存泄漏问题;令一方面使用工具帮助检测以及定位内存泄漏点。

内存泄漏问题的调试一是要检测是否有内存泄漏;二是要定位内存泄漏点。

C Run-Time Libraries (CRT)

为了检测内存泄漏,在CRT中定义了debug heap functions;在需要进行内存调试的代码中添加以下声明(必须按以下顺序):

#define _CRTDBG_MAP_ALLOC
#include <cstdlib>
#include <crtdbg.h>

在crtdbg.h中,将C标准的malloc和free库函数映射到_malloc_dbg和free方法,通过映射的方法来记录内存的分配和释放情况;一旦引入了上述声明后,在目标程序的退出位置前通过调用 _CrtDumpMemoryLeaks()就能检测到是否有内存泄漏;但这样的话只

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值