2009年1月31日星期六

crtDbgFlag

在Windows中检查内存泄露的代码
_CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF | _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG));
以下来自msdn

_crtDbgFlag 标志包含下列位域:

位域默认值说明
_CRTDBG_ALLOC_MEM_DFOn打开调试分配。当该位为 off 时,分配仍链接在一起,但它们的块类型为 _IGNORE_BLOCK
_CRTDBG_DELAY_FREE_MEM_DFOff防止实际释放内存,与模拟内存不足情况相同。当该位为 on 时,已释放块保留在调试堆的链接列表中,但标记为 _FREE_BLOCK,并用特殊字节值填充。
_CRTDBG_CHECK_ALWAYS_DFOff导致每次分配和释放时均调用 _CrtCheckMemory。这将减慢执行,但可快速捕捉错误。
_CRTDBG_CHECK_CRT_DFOff导致将标记为 _CRT_BLOCK 类型的块包括在泄漏检测和状态差异操作中。当该位为 off 时,在这些操作期间将忽略由运行时库内部使用的内存。
_CRTDBG_LEAK_CHECK_DFOff导致在程序退出时通过调用 _CrtDumpMemoryLeaks 来执行泄漏检查。如果应用程序未能释放其所分配的所有内存,将生成错误报告。

没有评论: