解除分配或释放内存块。
语法
void free(
void *memblock
);
参数
memblock
要释放的以前分配的内存块。
注解
free 函数释放以前通过调用 calloc、malloc 或 realloc 分配的内存块 (memblock)。 已释放的字节数等于分配块时(对于 realloc 则为重新分配)请求的字节数。 如果 memblock 是 NULL,会忽略指针并立即返回 free。 尝试释放无效指针(指向并非由 calloc、malloc 或 realloc 分配的内存块的指针)可能会影响后续分配请求,并导致错误。
如果在释放内存时发生错误,则根据操作系统中关于错误性质的信息设置 errno。 有关详细信息,请参阅errno, _doserrno, _sys_errlist和_sys_nerr.
释放内存块后,_heapmin 通过合并未使用的区域并将其释放回到操作系统,将堆上的可用内存量降至最低。 未释放给操作系统的已释放内存还原到可用池,并且可用于重新分配。
当应用程序与调试版的 C 运行时库链接时,free 将解析为 _free_dbg。 若要详细了解如何在调试过程中托管堆,请参阅 CRT 调试堆。
free 标记为 __declspec(noalias),这表示该函数保证不会修改全局变量。 有关详细信息,请参阅 noalias。
若要释放使用 _malloca 分配的内存,请使用 _freea。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
要求
| 函数 | 必需的标头 |
|---|---|
free |
<stdlib.h> 和 <malloc.h> |
有关兼容性的详细信息,请参阅 兼容性。
示例
请参阅 malloc 的示例。
另请参阅
内存分配
_alloca
calloc
malloc
realloc
_free_dbg
_heapmin
_freea