0
我啓用堆調試嘗試和調試一些內存泄漏錯誤。我這樣做包括以下內容:使用堆調試MS VC++ 2005
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
連同_CrtDumpMemoryLeaks()
在一個感興趣的函數調用。
然後,我還編輯項目屬性配置,將調試類型設置爲'Native Only'
,並添加預處理器定義'_DEBUG'
和C/C++代碼生成運行時間庫/MDd
。我發現無論我把_CrtDumpMemoryLeaks()
函數調用放在哪裏,它都會按如下方式轉儲內存泄漏輸出。
Detected memory leaks!
Dumping objects ->
{2606} normal block at 0x000000003D3A5370, 32 bytes long.
Data: <VAR1> 54 48 45 52 4D 41 4C 5F 43 4F 4E 44 55 43 54 49
{2605} normal block at 0x000000003D3A52E0, 32 bytes long.
Data: <VAR2> 52 4F 43 4B 5F 48 45 41 54 5F 43 41 50 41 43 49
{2604} normal block at 0x000000003D3A5250, 32 bytes long.
Data: <VAR3> 45 51 55 49 4C 49 42 52 41 54 49 4F 4E 5F 52 45
{2603} normal block at 0x000000003D3A51C0, 32 bytes long.
Data: <VAR4> 4D 41 58 5F 57 41 54 45 52 5F 43 41 50 49 4C 4C
{2602} normal block at 0x000000003D3A5130, 32 bytes long.
Data: <VAR5> 4D 41 58 5F 47 41 53 5F 43 41 50 49 4C 4C 41 52
{2601} normal block at 0x000000003D3A50A0, 32 bytes long.
Data: <VAR6> 57 41 54 45 52 5F 43 4F 4D 50 52 45 53 53 49 42
{2600} normal block at 0x000000003D3A5000, 48 bytes long.
這是什麼意思?這是否意味着如果在調用點存在轉儲輸出,那麼在此之前實際發生錯誤/泄漏?我們可以肯定地得出結論嗎?如果不是,它似乎不是一個非常有用的工具。任何意見/幫助如何正確使用它或解釋方面的讚賞。謝謝!
謝謝..我會試試看。感謝您的迴應! –
似乎只對2008/2010有效。你知道2005年的任何選擇嗎?沒關係,它看起來確實支持2005 ..會給它一個鏡頭。 –