2013-07-23 23 views
1

我正在爲Windows應用商店開發3D遊戲。我在遊戲中檢測到內存泄漏,但在調試時無法看到輸出中內存泄漏的文件名和行號。以下是我已經包括用於檢測內存泄漏的代碼行:使用CRT庫檢測Metro應用程序中的內存泄漏

#define _CRTDBG_MAP_ALLOC 
#include <stdlib.h> 
#include <crtdbg.h> 

_CrtDumpMemoryLeaks(); 

以下是調試應用程序的輸出:

Detected memory leaks! 
Dumping objects -> 
{1686} normal block at 0x06FD72E8, 8 bytes long. 
Data: <  > 08 F5 FE 03 00 00 00 00 
{1685} normal block at 0x03FEF500, 40 bytes long. 
Data: < x r  > 20 E5 B4 01 78 EE FE 03 E8 72 FD 06 00 A9 03 04 
{1684} normal block at 0x0403A900, 64 bytes long. 
Data: <W i n d o w s . > 57 00 69 00 6E 00 64 00 6F 00 77 00 73 00 2E 00 
{1676} normal block at 0x0406C858, 36 bytes long. 
Data: <   K  > FF FF 00 00 FF EE 82 EE FF 4B 00 82 FF 00 00 FF 
{1658} normal block at 0x06FD7208, 8 bytes long. 
Data: <  > 80 EE FE 03 00 00 00 00 
{1657} normal block at 0x03FEEE78, 40 bytes long. 
Data: <   r J > 00 F5 FE 03 F8 F3 FE 03 08 72 FD 06 E0 4A F7 06 

然而,據微軟的博客,我應該是獲得文件和行號的名稱時_CRTDBG_MAP_ALLOC包括在類似下面的代碼:

Detected memory leaks! 
Dumping objects -> 
C:\PROGRAM FILES\VISUAL STUDIO\MyProjects\leaktest\leaktest.cpp(20) : {18} 
normal block at 0x00780E80, 64 bytes long. 
Data: <    > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD 
Object dump complete. 

我即使在代碼中包含_CRTDBG_MAP_ALLOC後,我也沒有得到類似的輸出(文件名和行號)。請幫我解決這個問題。

在此先感謝!

+0

這是否幫助? http://stackoverflow.com/questions/1567866/visual-studio-2008-c-memory-leak-detection-not-showing-file-method-location – doctorlove

回答

2

上有SO

類似的問題工作的呢?另外,如果內存分配數量(大括號內)總是相同,則可以使用該數字來設置斷點,例如,

_CrtSetBreakAlloc(18); 

詳細here

+0

感謝您的答覆。這真的很有幫助。 –

+0

@Devendra無後顧之憂。考慮給它一個打勾:http://stackoverflow.com/help/someone-answers – doctorlove