❝VLD内存工具可以为每个泄漏的块提供完整的堆栈跟踪,包括源文件和行号信息,从而快速找到内存泄漏点。 ❞
注:「仅支持Windows平台。」
https://github.com/KindDragon/vld/releases
C:\users\LeakDetectorDemo
└─ThirdPart
└─vld-2.5.1
├─bin
│ ├─Win32
│ └─Win64
├─include
└─lib
├─Win32
└─Win64
win32 {
CONFIG(debug, debug|release) {
vld_path = $$PWD/ThirdPart/vld-2.5.1
!contains(QMAKE_HOST.arch, x86_64) {
message("x86_32 build")
LIBS += -L$$vld_path/lib/Win32
}
else {
message("x86_64 build")
LIBS += -L$$vld_path/lib/Win64
}
INCLUDEPATH += $$vld_path/include
LIBS += -lvld
}
}
在main.cpp中添加#include <vld.h>
后以调试模式运行即可检测内存泄漏。
#include <vld.h>
int main(int argc, char *argv[])
{
int *a = new int(10); /* 模拟内存泄漏点 */
return 0;
}
main.cpp (5): LeakDetectorDemo.exe!main() + 0xA bytes
Visual Leak Detector detected 1 memory leak (56 bytes).
「可以看到提示了一个内存泄漏点,在main.cpp的第五行。」
#include <vld.h>
int main(int argc, char *argv[])
{
int *a = new int(10);
delete a;
return 0;
}
No memory leaks detected.
https://github.com/KindDragon/vld
https://github.com/KindDragon/vld/wiki