检测c++ Windows应用程序中的内存泄漏

Detecting Memory Leaks in C++ Windows application

本文关键字:内存 泄漏 应用程序 c++ Windows 检测      更新时间:2023-10-16

我有一个c++ windows应用程序,它有一些内存泄漏问题。是否有可能使用NTSD分析转储中的内存泄漏?如果是,请指导我如何做?

我也听说我们可以使用用户模式转储。我不太熟悉在窗户上发现漏洞。在Linux中使用Valgrind非常容易。

是否有其他更好的选项来检查这个

有关视觉泄漏检测器的详细信息,请参阅此处。我在Windows上用过它。在应用程序中所要做的就是

#include <vld.h>

,在调试程序时,您将在终端中看到关于检测到的泄漏的报告,如下所示:

---------- Block 1199 at 0x04BE1058: 136 bytes ----------
Call Stack:
d:FoobarFooLog.cpp (26): FooLog::getInstance
d:FoobarFooMain.cpp (75): FooMain::init
f:ddvctoolscrt_bldself_x86crtsrccrtexe.c (578): __tmainCRTStartup
f:ddvctoolscrt_bldself_x86crtsrccrtexe.c (403): WinMainCRTStartup
0x759A3677 (File and line number not available): BaseThreadInitThunk
0x770C9D42 (File and line number not available): RtlInitializeExceptionChain
0x770C9D15 (File and line number not available): RtlInitializeExceptionChain
Data:
9C 33 2D 6B    74 2A 2D 6B    C8 11 BE 04    00 00 00 00     .3-kt*-k ........
00 00 00 00    70 14 BB 6C    70 14 BB 6C    00 00 00 00     ....p..l p..l....
00 00 00 00    68 14 BB 6C    68 14 BB 6C    00 00 00 00     ....h..l h..l....
00 00 00 00    6C 14 BB 6C    6C 14 BB 6C    20 12 BE 04     ....l..l l..l....
00 00 00 00    CD 00 CD CD    00 00 00 00    01 CD CD CD     ........ ........
68 14 BB 6C    78 33 2D 6B    00 00 00 00    00 00 00 00     h..lx3-k ........

我已经非常成功地跟踪内存和资源泄漏与DrMemory。它可以与GCC和MSVC一起使用,并且使用起来非常简单。