_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 调试堆详细信息。 若要了解分配块类型及其使用方式,请参阅调试堆上的块类型。 有关调用标准堆函数与调试版本之间的差异的信息,请参阅堆分配函数的调试版本。
要求
例程 | 必需的标头 |
---|---|
_free_dbg |
<crtdbg.h> |
有关兼容性的详细信息,请参阅 兼容性。
示例
有关如何使用 _free_dbg
的示例,请参阅 crt_dbg2
。