社区
C语言
帖子详情
"free"干了什么?
wenyanshan110
2004-08-18 10:02:18
请看下面程序:
·
#include<stdio.h>
#include<stdlibh>
main()
{int *p;
p=(int *)malloc(sizeof(int));
printf("input the value:\n");
scanf("%d",p);
free(p);
printf("p is %d",*p);
return;
}
为什么还是可以访问p?
...全文
205
13
打赏
收藏
"free"干了什么?
请看下面程序: · #include #include main() {int *p; p=(int *)malloc(sizeof(int)); printf("input the value:\n"); scanf("%d",p); free(p); printf("p is %d",*p); return; } 为什么还是可以访问p?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ehhl
2004-08-18
打赏
举报
回复
所谓的内存分配,打个比方,有一栋大楼,所有的房间就是内存,要分配的时候就是向大楼申请空闲的房间,如果已经住满,那么分配失败,(return null)。否则,按照你需要的数量,比如申请5个房间,那么大楼就会告诉你5个房间中第一个房间的房间号码。等你free内存的时候,就相当于告诉大楼,这5个房间不用了,如果有别人来住,那么就可以给别人住了。
nicknide
2004-08-18
打赏
举报
回复
是对的啊,你在VC的环境下用调试模式看看,看是不是对的,VC调试模式下,内存回收后默认都把那块内存地址内容写为0xcd,呵呵,那样你的东西就不对了
cxy815
2004-08-18
打赏
举报
回复
free只是释放内存空间,表示p已不再“占有”该内存。只有在令p=null之后p值才无法访问。
liubingqian
2004-08-18
打赏
举报
回复
free只是告诉操作系统:参数p所指向的堆内存空间现在不用了,可以被别的程序所使用。并不是说该空间被清零,以前是什么内容还是什么内容,除非有应用程序对该内存进行了修改。
p作为一个局部变量在函数执行期继续存在。
良好的风格在free(p);后应该p=NULL;
wenyanshan110
2004-08-18
打赏
举报
回复
to(bm1408(当UP成星时,我就......继续UP!我会找到媳妇吗(:因为) )
输出是对的!
wenyanshan110
2004-08-18
打赏
举报
回复
谢谢!
bm1408
2004-08-18
打赏
举报
回复
这里要区别指针和批针的指向!
int *p;//P本身是一个变量!有效期是MAIN函数体
free(p);//他只是提示OS把他分配的这段动态内存再次收回!
P变成了野指针!
printf("p is %d",*p);//谁他妈知道他输出的是什么东东呢!
积木
2004-08-18
打赏
举报
回复
free标志那块内存可以被重新写,而不是由这个程序锁定,只由这个程序改写
所以在别的程序没有修改这块的时候你还是可以访问,释放不一定就非得清零。
但是现在你这么访问是很危险的,因为结果实际上应该是不确定的,但是这个程序是看不出来的
ehhl
2004-08-18
打赏
举报
回复
用malloc分配一块内存,os就会从自己维护的堆里取出来给用户。在VC的目录下可以找到的吧,是不是malloc.c?
ehhl
2004-08-18
打赏
举报
回复
究竟属于什么范畴不知道,但是,必须要操作系统协作是肯定的。象在window平台上用malloc,window就提供了内存分配的接口,因为os本身维护着系统的内存池,
iorchis
2004-08-18
打赏
举报
回复
关注 boyb() 所提问题中ing.......
你我他111
2004-08-18
打赏
举报
回复
那要是没有操作系统的内存管理(在嵌入式开发中,可能就没有操作系统),类似于alloc(),malloc(),new()这些内存分配函数是不是就不能用了?
进一步,这些关于内存的函数是属于语言的范畴,还是必须要操作系统的协作才能完成?
望高手指点!!
cxce
2004-08-18
打赏
举报
回复
同意楼上的!
free
()它到底做了什么?
free
()究竟做了什么? ????:
free
释放的是指针所指的内存空间,即将该内存空间归还给了操作系统。 ⚠️:但
free
之后,指针仍然存在,指针指向也不变,指针的内容仍存在且不变。 例子: #include<stdio.h> #...
anchor-
free
存在什么缺点?
点击上方“计算机视觉工坊”,选择“星标”
干
货第一时间送达作者丨Kissrabbit、CK1998来源丨知乎问答编辑丨极市平台导读本文汇总了一些知乎上关于anchor-
free
存在的缺点的...
英语练习143 Are you
free
?
你问这
干
嘛? 迪克:你想不想和我一起去参加宴会? 莉萨:好啊!你会到我的住处来接我吗? 迪克:当然。八点钟好吗? 莉萨:好啊。 迪克:到时候见。 Are you
free
? Hi,Sally!are you
free
this Saturday?...
free
()到底做了什么
在LeetCode上做题偶然发现一道题:
free
内存后,还继续调用该指针,于是好奇,想了解
free
到底做了什么。 这段代码的
free
()掉了nextTemp结点的malloc内存,但后面还可以使用nextTemp = nextTemp->next。 2....
linux
free
命令详解
free
命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。 二. 语法
free
[选项] 三. 选项 默认情况下,即在没有选项的情况下,"
free
"命令显示内存的使用信息。默认按照k(b...
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章