free()它到底做了什么?

本文详细介绍了C语言中的动态内存分配函数free()的作用,它负责释放指针所指向的内存空间,归还给操作系统。然而,free()操作后,指针本身并未改变,其内容可能为空也可能保持原样,存在安全隐患。文章通过实例代码展示了free()使用后可能出现的情况,并强调了malloc与free的配对使用原则。同时,还提及了malloc()的工作原理,帮助读者全面理解C语言的内存管理机制。
摘要由CSDN通过智能技术生成

free()究竟做了什么?

🤖:free释放的是指针所指的内存空间,即将该内存空间归还给了操作系统。
⚠️:但free之后,指针仍然存在,指针指向也不变,指针的内容仍存在且不变。

例子:

#include<stdio.h>
#include<stdlib.h>
void main()
{
	char *p;
	p =(char*)malloc(100*sizeof(char));
	printf("\n第一次输入:");
	scanf("%s",p);
	printf("\n第一次输出:%s\n",p);
	free(p);
	printf("\n释放之后的输出:%s\n",p);
	p=NULL;
	printf("\n释放后赋空的输出:%s\n",p);
}

执行结果:

第一次输入:boy
第一次输出:boy
释放后输出:boy
释放后赋空的输出:NULL

(释放后的输出可能和原来的内容一样,也可能是乱码。)

另:
C语言中malloc与free常常成对出现。
一般有malloc,必须有与之对应的free;而free可以单独出现。

做个比喻:
malloc是个大美女💃,free是追随者🏃,你看到malloc出现了,就会在它身后看见她的小迷妹free。💃🏃

但是free呢,free🚶单独出现很正常,大美女可不一定跟在它的周围。🚶

知道了free,我们再看看它的伴侣malloc:
转载:malloc如何分配到内存空间的?🐧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值