C语言free()函数,释放内存用法详解

free()函数

C语言标准库stdlib.h中的free()函数,可用于释放分配给程序的内存。通常情况下,C语言的程序结束之后,运行程序的操作系统会自动将那些之前分配给程序的内存释放掉,但如果需要释放动态分配的内存,那么就需要使用free()函数来完成对应的工作。free()语法如下:

void free(void *ptr)

提示:free()函数只能用于释放由calloc()、malloc()和realloc()函数等动态分配的内存。

free()参数

参数描述
ptr指针,指向所要释放的分配的内存的地址

提示:free()函数的参数可以是空指针,而且一般情况下,释放内存之前也会对指向内存的指针进行检查,判断是否为空指针。

提示:如果尝试使用free()函数释放非动态分配(未使用calloc()、malloc()和realloc()函数动态分配)的内存可能会导致未定义的行为,比如多次释放就会如此。

提示:通过free()释放内存后的,可以将参数(一个指针)指向NULL,避免悬挂指针。

free()实例代码

如下实例代码,将使用free()函数释放通过calloc()动态分配的内存,并将指针指向NULL,避免悬挂指针:

#include "stdio.h"
#include "stdlib.h"
#include "string.h"


int main() {
    int element_num = 100;
    char *arr = calloc(element_num, sizeof(char));
    if(arr == NULL){
        printf("未动态分配内存\n");
    }else{
        strcpy(arr, "hello");
        printf("动态分配内存完成\n");
        printf("%s\n", arr);
    }

    // free()函数释放内存
    free(arr);
    // 指针指向NULL,避免悬挂指针
    arr = NULL;
    
    return 0;

}

代码运行后,得到输出值为:

动态分配内存完成
hello

免责声明:内容仅供参考,不保证正确性。


全栈后端 / C语言教程 :


















Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.