【发布时间】:2022-01-06 14:31:37
【问题描述】:
我第一次尝试使用 CRT 库来检测内存泄漏。我在程序的请求中定义了#define _CRTDBG_MAP_ALLOC。我的程序由类一结构和主要功能组成。在主要功能中,我最后有_CrtDumpMemoryLeaks();。我试着关注这些Instructions。
我想获取导致内存泄漏的数据分配行,但我得到如下输出:
Detected memory leaks!
Dumping objects ->
{326} normal block at 0x00E02C40, 8 bytes long.
Data: <<# > 3C 23 E0 00 00 00 00 00
{322} normal block at 0x00E02CB0, 8 bytes long.
Data: <L > 4C 1F E0 00 00 00 00 00
{318} normal block at 0x00E02AF0, 8 bytes long.
Data: < " > CC 22 E0 00 00 00 00 00
{312} normal block at 0x00E02A10, 8 bytes long.
Data: < $ > FC 24 E0 00 00 00 00 00
...
我不会在我的程序中的任何地方退出,它总是在 main 中完成。我没有得到分配号的原因是什么?如果需要,我可以添加我的代码。
感谢您的帮助。
【问题讨论】:
-
"
#define _CRTDBG_MAP_ALLOC在程序的开头。"。这不是它应该被使用的方式。它必须在每个 Translation Unit 的开头。例如。在每个 .cpp 文件的第一行,或者在使用 PreCompiled Headers 时,作为 PreCompiled Header 的第一行。 -
@MSalters 是的,抱歉,我忘了说我只有一个 .cpp 文件
标签: c++ memory-leaks crtdbg.h