Visual C++内存泄露检测工具(VLD)


前言

C/C++ 程序越复杂,内存的管理显得越重要,稍有不慎就会出现泄漏。如果内存泄漏不是很严重,在短时间内对程序不会有太大影响,这也使得内存泄漏问题有很强的隐蔽性,不易被发现。然而不管内存泄漏多么轻微,当程序长时间运行时,其破坏力是惊人的 - 从性能下降到内存耗尽,甚至会影响其他程序的正常运行。


一、VLD

VLD(Visual Leak Detector)是一款用于 Visual C++ 的免费内存泄露检测工具。相比较其它内存泄露检测工具,它在检测到内存泄漏的同时,还具有如下特点:

  • 可以得到内存泄漏点的调用堆栈,如果可以的话,还能得到其所在文件及行号;
  • 可以得到泄露内存的完整数据;
  • 可以设置内存泄露报告的级别;
  • 它是一个已经打包的 lib,使用时无须编译源码。对于使用者自己的代码,只需要做很小的改动;源码使用 GNU 许可发布,并有详尽的文档及注释。对于想深入了解堆内存管理的读者,是一个不错的选择。

可见,VLD 简单易用。只需要做很小的改动(添加库并包含头文件),然后正常运行自己的程序,就可以发现内存问题;如果深入源码,可以学习到堆内存分配与释放的原理、内存泄漏检测的原理及内存操作的常用技巧等。

二、下载、安装

下载、安装
VLD 主页
文档地址
GitHub 地址
## 2.读入数据

三、使用

要在项目中使用 VLD,请遵循以下简单步骤:

  • 在程序中的至少一个 C/C++源文件中,包括 vld.h 头文件。将包含语句添加到哪个文件并不重要。标头相对于其他标头的包含顺序也无关紧要。唯一的例外是 stdafx.h(或任何其他预编译头)。预编译头(如 stdafx.h)必须始终是源文件中包含的第一个头文件,因此 vld.h 必须包含在任何预编译头之后。
  • 如果程序包含一个或多个 DLL,并且您还希望检查内存泄漏,则还要将 vld.h 包含在要包含在泄漏检测中的每个 DLL 中的至少一个源文件中。
  • 生成程序的调试版本。

注意:与早期(1.9 之前)版本的 VLD 不同,现在可以在每个源文件中包含 vld.h,或者将其包含在许多或所有源文件所包含的公共标头中。只有 VLD 代码的一个副本将加载到进程中,无论有多少源文件包含 vld.h。

配置项目:
附加包含目录:D:\Program Files\Visual Leak Detector\include
附加库目录:D:\Program Files\Visual Leak Detector\lib\Win64
附加依赖项:vld.lib

示例代码:

#include <iostream>
#include <vld.h>
using namespace std;

int main(int argc, char* argv[])
{
	int* aaa = new int[10];
	return 0;
}

结果:
在这里插入图片描述
然后修改对应代码。


除此之外,还可以利用微软的gflags.exe进行检查内存泄露问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值