使用VLD查找内存泄漏

1 篇文章 0 订阅
1 篇文章 0 订阅

内存泄漏查找----------VLD

VLD是VC++ 提供的内存泄漏查找工具 只能用于VC++编译器!


开始

下载地址:https://vld.codeplex.com/releases  ,下载完直接安装即可;

我下载的是v2.5.1

安装后就需要配置库文件和头文件;

下面提供在在Qt中,简单配置方式:

找到VDL安装目录下的bin目录下的include(我的路径是 C:\Program Files (x86)\Visual Leak Detector\include)中的头文件全部copy到Qt 编译器(VC++编译器才行)include文件中;(我这里的路径是:C:\Qt\Qt5.9.1\5.9.1\msvc2015_64\include)  再将VDL安装目录下的lib目录中的Win64(64位机)目录中的库文件copy到Qt 编译器中的lib目录中;

配置完成后就可以在代码中添加头文件#include <vld.h>

程序在debug模式下编译的时候会检查内存泄漏 ,如果有编译完会将内容输出到应用程序输出窗口,在release模式不会链接VLD库;

输出内容(没有泄漏):

Visual Leak Detector read settings from: C:\Program Files (x86)\Visual Leak Detector\vld.ini //配置文件位置 

Visual Leak Detector Version 2.5.1 installed. //版本信息

No memory leaks detected. //没有检测到内存泄漏

Visual Leak Detector is now exiting. //VLD退出


输出内容(有内存泄漏):

Visual Leak Detector read settings from: C:\Program Files (x86)\Visual Leak Detector\vld.ini

Visual Leak Detector Version 2.5.1 installed.

WARNING: Visual Leak Detector detected memory leaks!

---------- Block 8 at 0x0000000000307B00: 48 bytes ---------- //在这里有泄漏  48 bytes

Leak Hash: 0x1497BE72, Count: 1, Total 48 bytes

Call Stack (TID 1712):

ucrtbased.dll!malloc()

f:\dd\vctools\crt\vcstartup\src\heap\new_scalar.cpp (19): untitled12.exe!operator new() + 0xA bytes

c:\users\administrator\documents\untitled12\mainwindow.cpp (11): untitled12.exe!MainWindow::MainWindow() + 0xA bytes;//说明了泄漏位置,在mainwindow.cpp的第11行,可执行文件是untitled12.exe,在MainWindow()这个函数中泄漏;

c:\users\administrator\documents\untitled12\main.cpp (8): untitled12.exe!main() + 0xC bytes

c:\users\qt\work\qt\qtbase\src\winmain\qtmain_win.cpp (104): untitled12.exe!WinMain() + 0xE bytes

f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (99): untitled12.exe!invoke_main()

f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (253): untitled12.exe!__scrt_common_main_seh() + 0x5 bytes

f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (296): untitled12.exe!__scrt_common_main()

f:\dd\vctools\crt\vcstartup\src\startup\exe_winmain.cpp (17): untitled12.exe!WinMainCRTStartup()

kernel32.dll!BaseThreadInitThunk() + 0xD bytes

ntdll.dll!RtlUserThreadStart() + 0x21 bytes

Data:

18 BA 9E 3F 01 00 00 00 A0 7B 30 00 00 00 00 00 ...?.... .{0.....

D8 BB 9E 3F 01 00 00 00 00 00 CD CD CD CD CD CD ...?.... ........

00 00 00 00 00 00 00 00 D0 7C 30 00 00 00 00 00 ........ .|0.....



Visual Leak Detector detected 1 memory leak (100 bytes).  //一共找到了1处内存泄漏的位置

Largest number used: 813 bytes.

Total allocations: 813 bytes.

Visual Leak Detector is now exiting.



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值