free

解除分配或释放内存块。

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。 有关在调试过程中如何托管堆的详细信息,请参阅 The CRT Debug Heap

free 是标记的 __declspec(noalias),这意味着函数可确保不修改全局变量。 有关详细信息,请参阅noalias

使用 _malloca_freea 释放已分配的内存。

要求

功能

必需的标头

free

<stdlib.h> 和 <malloc.h>

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

示例

请参阅 malloc 示例。

.NET Framework 等效项

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

请参见

参考

内存分配

_alloca

calloc

malloc

realloc

_free_dbg

_heapmin

_freea