C语⾔提供了另外⼀个函数free,专⻔是⽤来做动态内存的释放和回收的,
free函数的声明在 stdlib.h 头⽂件中。
•
如果参数 ptr
指向的空间不是动态开辟的,那free函数的⾏为是未定义的。
•
如果参数
ptr
是NULL指针,则函数什么事都不做。
我们来举一个例子
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num = 0;
scanf("%d", &num);
int arr[num] = { 0 };
int* ptr = NULL;
ptr = (int*)malloc(num * sizeof(int));
free(ptr);//释放ptr所指向的动态内存
ptr = NULL;//是否有必要?
return 0;
}c
这里面大家可以记住
free(ptr);//释放ptr所指向的动态内存
ptr = NULL;//是否有必要?
这两个代码一般同时出现