_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
。