_CrtDumpMemoryLeaks

发生内存泄漏时,转储调试堆中的所有内存块(仅限调试版本)。

语法


int _CrtDumpMemoryLeaks( void );

返回值

如果发现内存泄漏,则 _CrtDumpMemoryLeaks 返回 TRUE。 否则,该函数返回 FALSE

注解

_CrtDumpMemoryLeaks 函数确定自程序开始执行以来是否发生内存泄漏。 当发现泄漏时,以用户可读形式转储堆中所有对象的调试标头信息。 未定义 _DEBUG 时,会在预处理过程中删除对 _CrtDumpMemoryLeaks 的调用。

在程序执行结束时频繁调用 _CrtDumpMemoryLeaks,以验证由应用程序分配的所有内存是否已释放。 使用 _CrtSetDbgFlag 函数打开 _crtDbgFlag 标志的 _CRTDBG_LEAK_CHECK_DF 位域,可以在程序终止时自动调用该函数。

_CrtDumpMemoryLeaks 调用 _CrtMemCheckpoint 以获取堆的当前状态,然后扫描尚未释放的块的状态。 当遇到未释放的块时,_CrtDumpMemoryLeaks 调用 _CrtMemDumpAllObjectsSince,以转储自程序开始执行时堆中分配的所有对象的信息。

默认情况下,内存转储操作不包含内部 C 运行时块 (_CRT_BLOCK)。 _CrtSetDbgFlag 函数可用来打开 _crtDbgFlag_CRTDBG_CHECK_CRT_DF 位,以将这些块包含在泄漏检测进程中。

有关堆状态函数和 _CrtMemState 结构的详细信息,请参阅堆状态报告函数。 有关如何在基堆的调试版本中分配、初始化和管理内存块的详细信息,请参阅 CRT 调试堆详细信息

要求

例程 必需的标头
_CrtDumpMemoryLeaks <crtdbg.h>

有关兼容性的详细信息,请参阅 兼容性

仅限 C 运行时库的调试版本。

示例

有关如何使用 _CrtDumpMemoryLeaks 的示例,请参阅 crt_dbg1

另请参阅

调试例程