尝试使用 crtdbg.h 查找内存泄漏时出现问题
Problem when trying to find memory leaks by using crtdbg.h
我是第一次尝试使用 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 中完成。我没有获得分配编号的原因可能是什么?如果需要,我可以添加我的代码。
感谢您的帮助。
好的,我提供的信息无法回答我的问题(很抱歉)。问题是我有一个 Base class 和派生的 classes。在基础 class 中,我没有虚拟析构函数。添加虚拟析构函数解决了我的问题并消除了所有内存泄漏。
我是第一次尝试使用 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 中完成。我没有获得分配编号的原因可能是什么?如果需要,我可以添加我的代码。
感谢您的帮助。
好的,我提供的信息无法回答我的问题(很抱歉)。问题是我有一个 Base class 和派生的 classes。在基础 class 中,我没有虚拟析构函数。添加虚拟析构函数解决了我的问题并消除了所有内存泄漏。