_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。有关更多信息,请参见平台调用示例。