free函数
仅有stack内的内存会被自动释放 故需要及时释放内存 否则内存空间会被浪费 存储已经没有利用价值的数据 内存会被消耗尽
free函数本质是将空间的内存给释放掉,也算是将空间的使用权给释放掉,释放后用户无法合法访问这段空间,释放掉后的空间存储的数据是随机值
悬空指针
free函数释放后 指针变量保存的malloc函数传回的首地址并未消失 如果继续使用指针变量保存的地址 则会出现越界
解决方案为将指针变量指向null
代码实践
#include <stdio.h>
#include <stdlib.h>
#define ORDER_SIZE 1
int main(void)
{
char* malloc_pointer = NULL;
malloc_pointer = (char*)malloc(ORDER_SIZE * sizeof(char));
if (NULL != malloc_pointer)
{
printf("申请内存成功\n");
free(malloc_pointer);
printf("%s\n", malloc_pointer);
system("pause");
}
else
{
printf("申请内存失败\n");
system("pause");
}
return 0;
}
该段代码中 便产生了悬空指针malloc_pointer 解决方法 在free函数一行语句后 插入一行代码 malloc_pointer = NULL;
即可