首页 > 编程笔记 > C语言笔记 阅读:44

C语言free()函数的用法(附带实例)

free() 是 C语言标准库提供的函数,位于<stdlib.h>头文件中,它的原型如下:
void free(void *ptr);
ptr 是最近一次调用 calloc()、malloc() 或者 realloc() 函数时返回的值。该函数的功能是释放由指针 ptr 指向的堆内存空间,使部分内存空间能被其他变量使用。

free() 函数无返回值。free() 函数用于释放内存空间,因此它必须与分配内存空间的函数(calloc()、malloc() 或者 realloc() )搭配使用。

例如,释放一个分配整型变量的内存空间,代码如下:
free(pInt);
代码中的 pInt 为一个指向整型堆内存空间的指针,使用 free() 函数可将其释放。

【实例】将分配的内存释放,并且在释放前输出一次内存中保存的数据,释放后再利用指针输出一次。观察两次的结果,可以看出调用 free() 函数之后内存被释放。
#include<stdio.h>
#include<stdlib.h>
int main()
{
   int* pInt;                                    /*整型指针*/
   pInt = (int*)malloc(sizeof(sizeof(int)));            /*分配整型空间*/
   *pInt = 100;                                  /*赋值*/
   printf("%d\n", *pInt);                        /*将值进行输出*/
   free(pInt);                                   /*释放该内存空间*/
   printf("%d\n", *pInt);                        /*将值进行输出*/
   return 0;
}
运行程序,结果为:

100
721232

注意,在调用 free(pInt)后,指针 pInt 变成“悬空指针”,指向的内存空间已经被释放,再次访问会导致未定义行为。好的编程习惯是在释放内存后将指针手动设置为 NULL,以避免意外访问。

相关文章