#C 语言标准库函数 free
/*********************************************
* @brief 释放内存
* @param ptr 要释放的内存地址
********************************************/
void free(void* ptr);
说明
释放由 malloc,realloc,calloc,aligned_alloc 等函数分配的内存。
如果参数 ptr
为 NULL
,则不执行任何操作。
释放不由上述函数分配的内存、释放后访问内存、重复释放内存均是未定义行为,通常会导致 SIGSEGV
错误。
参数
ptr
- 要释放的内存地址
返回值
无
#示例
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int* ptr1 = malloc(4 * sizeof(int)); // 分配内存,4 个 int
int* ptr2 = malloc(sizeof(int[4])); // 分配内存,4 个 int
int* ptr3 = calloc(4, sizeof(int)); // 分配内存,4 个 int
if (ptr1)
free(ptr1); // 释放内存
if (ptr2)
free(ptr2); // 释放内存
if (ptr3)
free(ptr3); // 释放内存
return 0;
}
#推荐阅读
#参考标准
- C23 standard (ISO/IEC 9899:2024):
- 7.24.3.3 The free function (p: 365)
- C17 standard (ISO/IEC 9899:2018):
- 7.22.3.3 The free function (p: 254)
- 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