记一次c++内存泄漏查找过程

本文记录了一次查找C++程序内存泄漏的过程,包括使用目测法、内存泄漏检测工具VLD、tMemoryMonitor和WinDbg的详细步骤。经过分析,发现了由于void *指针删除导致Vector析构函数未执行,从而引发内存泄漏的问题。
摘要由CSDN通过智能技术生成

        上周从周五开始疯狂修仙,累的一批。

        周日正美滋滋的睡着回笼觉,准备补回觉,突然被一个电话打过来去公司查软件内存泄漏问题(连续查了两天)。

        当时软件的情况是24 小时内存增加600mb内存,而验收标准是连续跑24 * 7小时,所以对于32位程序来说将达到4.2GB

会出现内存无法分配的情况(超出32位指针访问地址的上限)。

        分析问题使用的方法有两种:

一、第一阶段

       目测法:

       通过注释部分模块,加速运行的方法,查看任务管理器,有无内存泄漏。

       时间:1天

       结果:不能查找出,感觉很多模块都没有泄露,又都有略微增长。

二、第二阶段

        时间:1天

        工具法:使用内存泄漏检测工具

        使用了的工具有:VLD(Visual Leak Detector),tMemoryMonitor,WinDbg

        其中WinDbg是在运行中抓取前后两次内存数据,然后对内存数据进行对比的方式,对抓取的时间节点很考究。

        VLD和tMemoryMonitor都是运行结束后再进行生成泄漏报告的方式

        VLD需要修改源代码,增加头文件(可以支持Debug版和Release版),会大大降低程序运行的速度。

        tMemoryMonitor只支持Release版

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值