free
来自cppreference.com
在标头 <stdlib.h> 定义
|
||
void free( void* ptr ); |
||
解分配之前由 malloc()、calloc()、aligned_alloc() (C11 起) 或 realloc() 分配的空间。
若 ptr
为空指针,则函数不进行操作。
若 ptr
的值不等于之前从 malloc()、calloc()、realloc() 或 aligned_alloc() (C11 起) 返回的值,则行为未定义。
若 ptr
所指代的内存区域已经被解分配,则行为未定义,即是说已经以 ptr
为实参调用过 free()
、free_sized()、free_aligned_sized() (C23 起) 或 realloc(),而且没有后继的 malloc()、calloc()、realloc() 或 aligned_alloc() (C11 起) 调用以 ptr
为结果。
若在 free()
返回后通过指针 ptr
访问内存,则行为未定义(除非另一个分配函数恰好返回等于 ptr
的值)。
解分配一块内存区域的 |
(C11 起) |
参数
ptr | - | 指向要解分配的内存的指针 |
返回值
(无)
注解
此函数接收空指针(并对其不处理)以减少特例的数量。不管分配成功与否,分配函数返回的指针都能传递给 free()
。
示例
运行此代码
引用
- C23 标准(ISO/IEC 9899:2024):
- 7.24.3.3 The free function (第 365 页)
- C17 标准(ISO/IEC 9899:2018):
- 7.22.3.3 The free function (第 254 页)
- C11 标准(ISO/IEC 9899:2011):
- 7.22.3.3 The free function (第 348 页)
- C99 标准(ISO/IEC 9899:1999):
- 7.20.3.2 The free function (第 313 页)
- C89/C90 标准(ISO/IEC 9899:1990):
- 4.10.3.2 The free function
参阅
分配内存 (函数) | |
(C23) |
归还之前分配的指定大小的内存 (函数) |
(C23) |
归还之前分配的指定大小和对齐的内存 (函数) |