什么是vld?

Visual Leak Detector是一款用于Visual C++的免费的内存泄露检测工具。相比较其它的内存泄露检测工具,它在检测到内存泄漏的同时,还具有如下特点:
  1、 可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号;
  2、 可以得到泄露内存的完整数据;
  3、 可以设置内存泄露报告的级别;
  4、 它是一个已经打包的lib,使用时无须编译它的源代码。而对于使用者自己的代码,也只需要做很小的改动;
  5、 他的源代码使用GNU许可发布,并有详尽的文档及注释。对于想深入了解堆内存管理的读者,是一个不错的选择。

从使用角度来讲,Visual Leak Detector简单易用,对于使用者自己的代码,唯一的修改是#include Visual Leak Detector的头文件后正常运行自己的程序,就可以发现内存问题。从研究的角度来讲,如果深入Visual Leak Detector源代码,可以学习到堆内存分配与释放的原理、内存泄漏检测的原理及内存操作的常用技巧等。

qt5如何使用vld查看内存泄漏?

1、确保调试器使用的是MSVC2015 32而不是minGW 32.更改教程可查看链接:https://blog.csdn.net/youarenotme/article/details/107444429;
2、下载VLD,下载地址:https://kinddragon.github.io/vld/;
3、安装VLD后,将“vld安装目录/include”下的vld.h和vld_def.h文件拷贝到Qt默认的include目录下,将“vld安装目录/lib/Win64"(这里注意根据自己安装的qt库位数决定)下的vld.lib拷贝到Qt默认的lib目录,就完成安装了;
4、修改要测试项目的main.cpp文件,在main函数上面添加以下代码:
include<vld.h>
5、在debug模式下(一定是运行而不是调试,否则无法查看到内存泄漏的具体代码行,具体原因暂未查到)运行程序,确保要检查的代码块被执行后,正常关闭程序;
6、在“应用程序输出”窗口查看检查结果。若结果中有“No memory leaks detected.”则表示无内存泄漏。

VLD一些有用的选项

VLD提供了一些配置项,可以通过vld.ini设置,默认情况将使用安装目录下的vld.ini,也可以将vld.ini拷贝到程序运行目录,这样仅当运行该程序时生效。
MaxTraceFrames:输出的堆栈级数限制

AggregateDuplicates:若为"yes",则只在报告中输出特定泄漏位置的第一次泄漏

MaxDataDump:转储数据大小限制

ReportTo:内存泄漏报告的输出形式,可以使用"debugger"、 "file"或者 “both”

ReportFile:内存泄漏报告的文件名,默认"memoryleakreport.txt"

VLD实现原理

Vld通过修改IAT表将crt的调用替换为自己的实现,并记录分配时的调用堆栈,相比通过宏替换new/delete、malloc/free,具有以下好处:

1、无需编译时对每个c/c++文件都包含指定头文件

2、可以运行时控制内存泄漏检查策略

3、具有很好的扩展性,例如支持vc11引入的_aligned_malloc

以上思路可用于检查其他泄漏,例如用户对象泄漏、GDI泄漏、句柄泄漏等

qt5使用内存检测工具vld查看内存泄漏相关推荐

  1. 如何查看计算机硬盘的软件内存条,内存检测工具,内存检测软件 - 内存条检测工具就用金山卫士 - 安全专题...

    在去电脑城去买内存条,不知道该内存条怎么样,怕自己遇到不法奸商.金山卫士已经集成 内存条检测工具,可以智能监测到该内存所有信息以及该内存性能怎么样. 内存检测工具 就用金山卫士 许多网民从电脑城购买回 ...

  2. 内存泄露检测工具VLD相关配置

    参考链接: VLD(Visual LeakDetector)内存泄露库的使用 VS2019编译 内存泄漏检测工具VLD 一.源码下载 源码下载链接:https://github.com/KindDra ...

  3. 动态内存检测工具Valgrind

    1. Valgrind查找内存泄露利器 Valgrind是一个GPL的软件,用于Linux(For x86, amd64 and ppc32)程序的内存调试和代码剖析.你可以在它的环境中运行你的程序来 ...

  4. Windows和Linux内存检测工具:Valgrind,Visual Leak Detector,CppCheck, Cpplint

    1 Linux内存泄漏检测工具Valgrind Valgrind简介 Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合.Valgrind由内核(core)以及基于内核 ...

  5. ios代码中的内存泄露,内存检测工具leaks 检测不出来

    iphone开发过程中,代码中的内存泄露我们很容易用内存检测工具leaks 检测出来,并一一改之,但有些是因为ios 的缺陷和用法上的错误,leaks 检测工具并不能检测出来,你只会看到大量的内存被使 ...

  6. java 内存检测工具

    今天偶然发现java一个内存检测工具: jstat 上网一搜, 参数如下 用以判断JVM是否存在内存问题呢?如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是 ...

  7. 内存检测工具BoundsChecker使用详述

    内存检测工具BoundsChecker使用详述 或许你还不知道大名顶顶的Nu-Mega,但一定听说过他们的产品SoftICE,BoundsChecker也是这家公司的产品.与Visual C++配合使 ...

  8. Android内存检测工具系列工具集

    Android内存检测工具系列工具集 Android关于内存的工具不少,灵活地选择工具就显得特别重要.在此特别推荐分享涵盖一定初步和定位能力的工具,可以让我们一步到位地分析问题,提升效率. 在此列举几 ...

  9. 【Linux】内存检测工具Valgrind

    内存检测工具Valgrind Valgrind是运行在Linux上的一套基于仿真技术的程序调试和分析工具,作者是获得过Google-O'Reilly开源大奖的Julian Seward,它包含一个内核 ...

最新文章

  1. http中的净荷 payload(有效载荷、有效负载)是什么?
  2. spring @import注解使用场景
  3. Android逆向工程 初篇
  4. Apache Pulsar:分布式发布订阅消息系统
  5. html微软雅黑字体模糊,WinXP中微软雅黑字体模糊看得很吃力怎么解决
  6. python枚举类型_Python 的枚举类型
  7. Spring properties dependency checking
  8. c语言调用子程序实例,C语言程序调用汇编语言子程序
  9. 台达编码器型号含义_台达伺服电机命名规则
  10. canvas示例样式_使用js canvas和atari vcs trivia制作基本html游戏的快速示例
  11. alice 和 bob 一起 van♂卡牌游戏
  12. JAVA 通过属性名称 获取属性值、设置属性值
  13. veracrypt 创建文件型加密卷
  14. 尚医通(九)数据字典模块前后端 | EasyExcel
  15. 实验室管理系统 可行性分析
  16. Android Sensor感应器介绍,获取用户移动方向,指南针原理
  17. Spark 的键值对(pair RDD)操作,Scala实现
  18. 动脉自旋标记磁共振成像在灌注和侧支循环检测的研究进展
  19. SQL SERVER 链接服务器Mysql
  20. Zemax-如何导入实体?

热门文章

  1. APP手机软件开发方案怎么做?
  2. vue 使用Computed实现数据的动态计算
  3. PLC模拟量输入 模拟量转换FB S_ITR(三菱FX3U)
  4. unity 自动寻路NavMesh
  5. 发布“智能化、平台化、全程电子化”的新OA系统——e-cology9.0
  6. GAN生成对抗网络论文翻译(一)
  7. python读取串口数据 绘图_使用Python串口实时显示数据并绘图的例子
  8. 顺时针(逆时针)填充矩阵
  9. POJ1190 生日蛋糕(回溯法)
  10. 神经风格迁移综述论文分享(neural style transfer review)