free()究竟做了什么?

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

例子:

#include

#include

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如何分配到内存空间的?🐧

2025-11-17 08:26:15