C/C++编译器内存泄漏检测工具(vld)

来源:互联网 发布:汉朝皇帝知乎 编辑:程序博客网 时间:2024/06/05 05:41

什么是vld?

Visual Leak Detector(vld):是一款开源检测内存泄露软件的简称。

为什么有vld?

灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题。当程序越来越复杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问题。

内存泄漏是最常见的内存问题之一。内存泄漏如果不是很严重,在短时间内对程序不会有太大的影响,这也使得内存泄漏问题有很强的隐蔽性,不容易被发现。然而不管内存泄漏多么轻微,当程序长时间运行时,其破坏力是惊人的,从性能下降到内存耗尽,甚至会影响到其他程序的正常运行。

另外内存问题的一个共同特点是,内存问题本身并不会有很明显的现象,当有异常现象出现时已时过境迁,其现场已非出现问题时的现场了,这给调试内存问题带来了很大的难度。

基于此,有了vld库。

vld有哪些特点?

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

如何配置vld?

下载:https://github.com/Noctis-xjw/Code-Cpp/blob/master/vld-10.zip

下载后将.h文件拷贝到vs或vc安装目录下的VC下的include文件夹内。
将.dll和.lib文件拷贝到lib中。
ok 至此已经全部配置好了。

如何使用vld?

我们先用c++写一个有内存泄露的代码。
编译,用F5进行调试。
我们可以发现以下调试信息。
这里写图片描述
至此。我们可以轻易地知道这里有内存泄露的问题。

当然 如果我们这里添加上delete
这里写图片描述

这就可以使内存泄漏被很好的检测。

原创粉丝点击