/*********************************************
* @brief 释放内存
* @param ptr 要释放的内存地址
********************************************/
void free(void* ptr);
!subtitle:说明
释放由 malloc,realloc,calloc,aligned_alloc 等函数分配的内存。
如果参数 ptr 为 NULL,则不执行任何操作。
释放不由上述函数分配的内存、释放后访问内存、重复释放内存均是未定义行为,通常会导致 SIGSEGV 错误。
!subtitle:参数
ptr - 要释放的内存地址
!subtitle:返回值
无
#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