free
定义于头文件 <stdlib.h>
|
||
void free( void* ptr ); |
||
解分配之前由 malloc() 、 calloc() 、 aligned_alloc (C11 起) 或 realloc() 分配的空间。
若 ptr
为空指针,则函数不进行操作。
若 ptr
的值不等于之前从 malloc() 、 calloc() 、 realloc() 或 aligned_alloc() (C11 起) 返回的值,则行为未定义。
若 ptr
所指代的内存区域已经被解分配,则行为未定义,即是说已经以ptr
为参数调用 free()
或 realloc() ,而且没有后继的 malloc() 、 calloc() 或 realloc() 调用以 ptr
为结果。
若在 free()
返回后通过指针 ptr
访问内存,则行为未定义(除非另一个分配函数恰好返回等于 ptr
的值)。
令 free 解分配内存区域的调用,同步于任何令分配函数分配相同或部分相同区域的后续调用。这种同步出现于任何解分配函数所做的内存访问后,和任何分配函数所做的内存访问前。所有操作每块特定内存区域的分配及解分配函数拥有单独全序。 |
(C11 起) |
参数
ptr | - | 指向要解分配的内存的指针 |
返回值
(无)
注意
此函数接收空指针(并对其不处理)以减少特例的数量。不管分配成功与否,分配函数返回的指针都能传递给 free()
。
示例
运行此代码
引用
- C11 standard (ISO/IEC 9899:2011):
- 7.22.3.3 The free function (p: 348)
- C99 standard (ISO/IEC 9899:1999):
- 7.20.3.2 The free function (p: 313)
- C89/C90 standard (ISO/IEC 9899:1990):
- 4.10.3.2 The free function