我正在使用包含内存泄漏的C ++应用程序,但我使用的是“Leakdiag”和“LDGrapher”,但我不知道泄漏在哪里?! 我也在使用“_CrtDumpMemoryLeaks();”功能给我这样的结果:
etected memory leaks!
Dumping objects ->
{657} normal block at 0x00D93B98, 52 bytes long.
Data: < N N > D8 4E D9 00 D8 4E D9 00 00 00 00 00 CD CD CD CD
{656} normal block at 0x00D93AF0, 108 bytes long.
Data: <( ; ( > 28 F0 12 00 00 00 00 00 98 3B D9 00 28 F0 12 00
{655} normal block at 0x00D94ED8, 52 bytes long.
Data: < ; ; > 98 3B D9 00 98 3B D9 00 CD CD CD CD CD CD CD CD
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\occcont.cpp(923) : {641} normal block at 0x00D92100, 12 bytes long.
Data: < > F6 06 0A 00 00 00 00 00 00 00 00 00
我怎么知道内存泄漏的真实情况?
答案 0 :(得分:0)
您可以重载全局new和delete运算符,每次使用new分配时,都会将指针的地址与__LINE__
和__FILE__
信息一起存储在某个容器中。删除某些内容时,将其从容器中删除。当您的应用程序退出时,转储容器的内容。然后,您将知道忘记取消分配的分配。您可以使用映射容器将内存地址作为键,将文件和行信息作为值。
我认为这与你可以到达内存泄漏的真实位置一样接近。