qt5使用内存检测工具vld查看内存泄漏
什么是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查看内存泄漏相关推荐
- 如何查看计算机硬盘的软件内存条,内存检测工具,内存检测软件 - 内存条检测工具就用金山卫士 - 安全专题...
在去电脑城去买内存条,不知道该内存条怎么样,怕自己遇到不法奸商.金山卫士已经集成 内存条检测工具,可以智能监测到该内存所有信息以及该内存性能怎么样. 内存检测工具 就用金山卫士 许多网民从电脑城购买回 ...
- 内存泄露检测工具VLD相关配置
参考链接: VLD(Visual LeakDetector)内存泄露库的使用 VS2019编译 内存泄漏检测工具VLD 一.源码下载 源码下载链接:https://github.com/KindDra ...
- 动态内存检测工具Valgrind
1. Valgrind查找内存泄露利器 Valgrind是一个GPL的软件,用于Linux(For x86, amd64 and ppc32)程序的内存调试和代码剖析.你可以在它的环境中运行你的程序来 ...
- Windows和Linux内存检测工具:Valgrind,Visual Leak Detector,CppCheck, Cpplint
1 Linux内存泄漏检测工具Valgrind Valgrind简介 Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合.Valgrind由内核(core)以及基于内核 ...
- ios代码中的内存泄露,内存检测工具leaks 检测不出来
iphone开发过程中,代码中的内存泄露我们很容易用内存检测工具leaks 检测出来,并一一改之,但有些是因为ios 的缺陷和用法上的错误,leaks 检测工具并不能检测出来,你只会看到大量的内存被使 ...
- java 内存检测工具
今天偶然发现java一个内存检测工具: jstat 上网一搜, 参数如下 用以判断JVM是否存在内存问题呢?如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是 ...
- 内存检测工具BoundsChecker使用详述
内存检测工具BoundsChecker使用详述 或许你还不知道大名顶顶的Nu-Mega,但一定听说过他们的产品SoftICE,BoundsChecker也是这家公司的产品.与Visual C++配合使 ...
- Android内存检测工具系列工具集
Android内存检测工具系列工具集 Android关于内存的工具不少,灵活地选择工具就显得特别重要.在此特别推荐分享涵盖一定初步和定位能力的工具,可以让我们一步到位地分析问题,提升效率. 在此列举几 ...
- 【Linux】内存检测工具Valgrind
内存检测工具Valgrind Valgrind是运行在Linux上的一套基于仿真技术的程序调试和分析工具,作者是获得过Google-O'Reilly开源大奖的Julian Seward,它包含一个内核 ...
最新文章
- http中的净荷 payload(有效载荷、有效负载)是什么?
- spring @import注解使用场景
- Android逆向工程 初篇
- Apache Pulsar:分布式发布订阅消息系统
- html微软雅黑字体模糊,WinXP中微软雅黑字体模糊看得很吃力怎么解决
- python枚举类型_Python 的枚举类型
- Spring properties dependency checking
- c语言调用子程序实例,C语言程序调用汇编语言子程序
- 台达编码器型号含义_台达伺服电机命名规则
- canvas示例样式_使用js canvas和atari vcs trivia制作基本html游戏的快速示例
- alice 和 bob 一起 van♂卡牌游戏
- JAVA 通过属性名称 获取属性值、设置属性值
- veracrypt 创建文件型加密卷
- 尚医通(九)数据字典模块前后端 | EasyExcel
- 实验室管理系统 可行性分析
- Android Sensor感应器介绍,获取用户移动方向,指南针原理
- Spark 的键值对(pair RDD)操作,Scala实现
- 动脉自旋标记磁共振成像在灌注和侧支循环检测的研究进展
- SQL SERVER 链接服务器Mysql
- Zemax-如何导入实体?
热门文章
- APP手机软件开发方案怎么做?
- vue 使用Computed实现数据的动态计算
- PLC模拟量输入 模拟量转换FB S_ITR(三菱FX3U)
- unity 自动寻路NavMesh
- 发布“智能化、平台化、全程电子化”的新OA系统——e-cology9.0
- GAN生成对抗网络论文翻译(一)
- python读取串口数据 绘图_使用Python串口实时显示数据并绘图的例子
- 顺时针(逆时针)填充矩阵
- POJ1190 生日蛋糕(回溯法)
- 神经风格迁移综述论文分享(neural style transfer review)