Share via


_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

.NET Framework 等效项

不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见平台调用示例

请参见

参考

调试例程