2013-04-23 112 views
1

我有一個C++的Windows應用程序,它有一些內存泄漏問題。是否可以使用NTSD分析轉儲中的內存泄漏?如果是這樣,請指導我如何做到這一點?檢測C++ Windows應用程序中的內存泄漏

我也聽說我們可以使用用戶模式轉儲來做到這一點。我不是很熟悉在窗口中發現泄漏。 Valgrind在Linux中非常容易。

還有其他更好的選擇來檢查這個嗎?

+0

正在尋找任何工具來研究記憶在窗戶上泄漏? – 4pie0 2013-04-23 15:46:27

+1

Application Verifier(http://www.microsoft.com/en-us/download/details.aspx?id=20028)會有幫助嗎? – souldzin 2013-04-23 15:48:48

+1

[Visual C++ - 內存泄漏檢測]的可能重複(http://stackoverflow.com/questions/2820223/visual-c-memory-leak-detection) – user93353 2013-04-23 15:53:08

回答

4

see here瞭解有關Visual Leak Detector的詳細信息。我已經在Windows上使用它。 你在你的應用程序做的是

#include <vld.h> 

和調試程序,這樣的事情時,你會看到一個關於在終端檢測到泄漏報告:

---------- Block 1199 at 0x04BE1058: 136 bytes ---------- 
Call Stack: 
d:\Foobar\FooLog.cpp (26): FooLog::getInstance 
d:\Foobar\FooMain.cpp (75): FooMain::init 
f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c (578): __tmainCRTStartup 
f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.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 ........ 
+1

我會通過這個VLD。我希望這在多線程應用程序中也會有用。 – Prabu 2013-04-24 06:10:25

+0

以前從未聽說過VLD。 4分鐘後,我知道我沒有內存泄漏,甜蜜!我推薦它! – Edvin 2015-08-11 16:26:14

0

我已經用DrMemory跟蹤內存和資源泄漏的巨大成功。它適用於GCC和MSVC,使用起來非常簡單。

+0

感謝您的便攜式解決方案。肯定會經歷這個。 – Prabu 2013-04-24 06:11:03