使用Visual Leak Detector检查内存泄露

近期某处windows版本程序发生故障,归结原因为内存泄露导致资源不足。

前面出现几次都没解决,这次落到我头上了。

 

今日上班时间已经试图将内存增加的情况复现,班车上就在搜相关资料,路上搜到的是用c运行时库函数_CrtDumpMemoryLeaks来检查,回到家后首先找到了Visual Leak Detector的使用

 

下载了VLD-1.9h的安装包,他的使用包含dll,lib库及include。也含有src代码,可以自己编译dll及lib。

 

首先安装,假设安装到d:/Program Files/Visual Leak Detector。安装完后会有说明文档,包括在vc下的设置等。

 

在该安装目录下游vld.ini,修改里面的

ReportTo值为both,表示debugger及file都产生输出

ReportFile值设为文件路径及文件名

 

StartDisabled则根据情况设置,默认为no即程序启动就算开始。

 

在需要分析的程序中,其开始及大部分线程的情况不是当前关注的重点,则可以设为yes,不启动,随后在某个线程内增加代码VLDEnable();用于启动此检测。

 

当只需要分析某一段代码时则可灵活的增加VLDEnable(); VLDDisable();进行控制。

 

 

当当前重点问题解决,继续分析所有代码时则可以将其设为no,以便全部检测。

 

待明天试验其效果了......

 

 

 

附:测试输出效果

Visual Leak Detector Version 1.9h installed.
    Outputting the report to the debugger and to E:/Develop/test/console/Debug/memory_leak_report.txt
    Starting with memory leak detection disabled.
WARNING: Visual Leak Detector detected memory leaks!
---------- Block 0 at 0x00280F28: 100 bytes ----------
  Call Stack:
    e:/develop/test/console/test.c (38): main
    crt0.c (206): mainCRTStartup
    0x77221194 (File and line number not available): BaseThreadInitThunk
    0x7744B495 (File and line number not available): RtlInitializeExceptionChain
    0x7744B468 (File and line number not available): RtlInitializeExceptionChain
  Data:
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD                                                  ........ ........

---------- Block 1 at 0x00280FD0: 600 bytes ----------
  Call Stack:
    e:/develop/test/console/test.c (17): funtest
    e:/develop/test/console/test.c (39): main
    crt0.c (206): mainCRTStartup
    0x77221194 (File and line number not available): BaseThreadInitThunk
    0x7744B495 (File and line number not available): RtlInitializeExceptionChain
    0x7744B468 (File and line number not available): RtlInitializeExceptionChain
  Data:
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD    CD CD CD CD    CD CD CD CD     ........ ........
    CD CD CD CD    CD CD CD CD                                   ........ ........

Visual Leak Detector detected 2 memory leaks.
Visual Leak Detector is now exiting.

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值