Memory leaks 使用CRT库检测Metro应用程序中的内存泄漏

Memory leaks 使用CRT库检测Metro应用程序中的内存泄漏,memory-leaks,3d,windows-runtime,microsoft-metro,Memory Leaks,3d,Windows Runtime,Microsoft Metro,我正在为Windows应用商店开发一款3D游戏。我在游戏中检测到内存泄漏,但在调试时无法在输出中看到内存泄漏的文件名和行号。以下是我用来检测内存泄漏的代码行: \define\u CRTDBG\u MAP\u ALLOC #包括 #包括 _CrtDumpMemoryLeaks(); 以下是调试应用程序时的输出: Detected memory leaks! Dumping objects -> {1686} normal block at 0x06FD72E8, 8 bytes long

我正在为Windows应用商店开发一款3D游戏。我在游戏中检测到内存泄漏,但在调试时无法在输出中看到内存泄漏的文件名和行号。以下是我用来检测内存泄漏的代码行:

\define\u CRTDBG\u MAP\u ALLOC
#包括
#包括
_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
检测到内存泄漏!
转储对象->
0x06FD72E8处的{1686}正常块,8字节长。
数据:<>08 F5 FE 03 00
0x03FEF500处的{1685}正常块,40字节长。
数据:20 E5 B4 01 78 EE FE 03 E8 72 FD 06 00 A9 03 04
0x0403A900处的{1684}正常块,64字节长。
资料:57 00 69 00 6E 00 64 00 6F 00 77 00 73 00 2E 00
0x0406C858处的{1676}正常块,36字节长。
数据:FF 00 FF EE 82 EE FF 4B 00 82 FF 00 FF
0x06FD7208处的{1658}正常块,8字节长。
数据:<>80 EE FE 03 00
0x03FEEE78处的{1657}正常块,40字节长。
数据:00 F5 FE 03 F8 F3 FE 03 08 72 FD 06 E0 4A F7 06
然而,根据Microsoft博客,当代码中包含\u CRTDBG\u MAP\u 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.
检测到内存泄漏!
转储对象->
C:\ProgramFiles\VISUAL STUDIO\MyProjects\leaktest\leaktest.cpp(20):{18}
0x00780E80处的正常块,64字节长。
数据:<>光盘
对象转储完成。
即使在代码中包含了\u CRTDBG\u MAP\u ALLOC之后,我也没有得到类似的输出(文件名和行号)。请帮我解决这个问题


提前谢谢

这方面也有类似的问题

这行吗

\ifdef\u调试
#定义调试\u新位置(\u普通\u块、\u文件、\u线)
#否则
#定义调试\新\位置
#恩迪夫
int*p=新的调试位置int(5);
或者,如果内存分配编号(大括号内)始终相同,则可以使用该编号设置断点,例如

\u CrtSetBreakAlloc(18);

详细信息

这有帮助吗?谢谢你的回复。“这真的很有帮助。”德文德拉不必担心。考虑给它一个滴答声: