首页 > 编程笔记

C语言free():释放堆内存

free() 是 C语言的一个标准库函数,定义在<stdlib.h>头文件中。

free() 函数用于释放之前通过 malloc()、calloc() 或 realloc() 函数分配的动态内存,函数的原型如下:
void free(void* ptr);

参数

ptr:指向先前由 malloc()、calloc() 或 realloc() 分配的内存块。

返回值

free() 没有返回值。

使用 free() 函数时,有以下几点是需要特别指出的:
因此用 free() 成功释放内存之后,应避免再次访问该内存块,将指针手动置为 NULL 是非常稳妥的方法。

【实例】以下是一个使用 malloc() 分配内存,并使用 free() 释放内存的 C语言代码示例。
#include <stdlib.h>
#include <stdio.h>

int main() {
    int *arr;
    int n = 5;

    // 使用 malloc 分配内存
    arr = (int*) malloc(n * sizeof(int));
    if (arr == NULL) {
        fprintf(stderr, "Memory allocation failed!\n");
        return 1;
    }

    // 初始化并打印数组
    for (int i = 0; i < n; i++) {
        arr[i] = i * i;
        printf("%d ", arr[i]);
    }
    printf("\n");

    // 释放分配的内存
    free(arr);

    // 设置指针为 NULL,以防止悬挂指针
    arr = NULL;

    return 0;
}
再次强调,释放内存后将指针置为 NULL 是一种良好的做法,可以帮助防止悬挂指针,尤其是在更复杂的程序中。

推荐阅读