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
免责声明:内容仅供参考,不保证正确性。