亲爱的,内存泄漏了

本文介绍了一套从简到难的C++内存泄漏排查方法,包括利用编译器特性、工具辅助及代码审查技巧等,适用于不同程度的内存泄漏问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前一直写在MSN Space上,可惜太慢了,转到这里混吧:)

C++内存泄漏太常见了,开点常见小药方备案,由简单到复杂,分为8类:


1.用Debug版本编译,退出时自动提示哪个文件哪一行泄漏。注意:使用此方法不能使用TerminateProcess。
2.有时,第一种方法不能提供文件名和行号,而只能提供块号,此时可用_CrtSetBreakAlloc()在分配该块时下断点。注意:此方法要求每次泄漏的块号基本一致。
3.利用_CrtMemXXX系列函数 + 二分法 逐步定位错误。可参考_CrtMemCheckpoint(),_CrtMemDifference(),_CrtMemDumpStatistics()等函数。
4.使用第三方工具BoundsChecker。注意:VC7编译的库要求7.0以上版本。
5.使用第三方工具ApplicationVerifier。
6.如果模块化程度高,可逐个排除各模块,从而确定错误所在。
7.熟悉代码的情况下,可先猜测出错区域,放大错误(比如调用一次的变成调用百次等),进而明确错误所在。
8.一般来说新代码出错的可能性较大,因此出现内存泄漏时,应先利用上述方法检查新代码。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值