_free_dbg

释放一个堆中的内存块(仅限调试版本)。

void _free_dbg( 
   void *userData,
   int blockType 
);

参数

  • userData
    指向被释放已分配的内存块的指针。

  • blockType
    被释放的内存块的类型:_CLIENT_BLOCK, _NORMAL_BLOCK 或 _IGNORE_BLOCK。

备注

_free_dbg 函数是 free 函数的调试版本。 当 _DEBUG 未定义时,每次减少调用_free_dbg 而去调用 free。 free 和 _free_dbg 释放基堆中的一个内存块,但是 _free_dbg 提供两个调试特性:保持堆的链表来模拟内存不足条件和块类型参数来释放特定的分配类型的能力。

在执行释放操作前,_free_dbg在所有指定的文件和块位置执行验证检查。 该应用程序预计不会提供此信息。 当释放内存块时,调试堆管理器自动检查用户部分两侧的缓冲区的完整性,如果发生覆盖,将发出错误报告。 如果设置 _crtDbgFlag 标记的 _CRTDBG_DELAY_FREE_MEM_DF 位字段,则用 0xDD 值来填充释放的块,给其分配 _FREE_BLOCK 块类型,以及将其保存到堆中内存块的链表中。

如果在释放内存时发生错误,则将 errno 设置为操作系统故障的特性信息。 有关详细信息,请参阅errno、_doserrno、_sys_errlist 和 _sys_nerr

有关在调试版本中的基位置堆中内存如何分配,初始化和管理的详细信息,请参阅 CRT 调试堆详细信息。 有关分配块的类型以及它们是如何使用的信息,请参阅 调试堆上的块类型。 有关调用一个标准的堆函数及其调试版本在应用程序的调试版本之间的差异,请参阅堆分配函数的“Debug”版本

要求

例程

必需的标头

_free_dbg

<crtdbg.h>

有关更多兼容性信息,请参见“简介”中的兼容性

示例

对于如何使用 _free_dbg 的例子,请参阅 crt_dbg2

.NET Framework 等效项

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

请参见

参考

调试例程

_malloc_dbg