鱼C论坛

 找回密码
 立即注册
查看: 1936|回复: 10

free函数的一点疑问

[复制链接]
发表于 2016-12-18 11:14:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问free一个指针以后,这个指针还能不能再指向同类型的其它数据?


比如 :
int i = 0;
int *p;
p = malloc( sizeof( int ) );
free( p );
p = &i;  // 请问这样合不合法?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-18 14:27:56 | 显示全部楼层
当然可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-18 21:29:30 | 显示全部楼层
free( p );只是释放了指针分配的内存地址,不是把指针扔了,所以扔可以给他赋予地址的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-19 13:03:45 | 显示全部楼层
这么做可以通过,但你指针指向的那块内存,其实已经不属于你这个指针合法拥有的内存了,只是这个指针还一直指向那块儿内存而已,因为你并没有NULL只是FREE掉了,你这样赋值给那块内存,如果那块儿内存已经被分配给了别的指针,你这样去赋值就非法修改到了别的指针内容东西
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2016-12-19 19:14:34 | 显示全部楼层
感谢大家!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-19 19:16:12 | 显示全部楼层

很感谢你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-20 11:14:55 | 显示全部楼层
陌雨 发表于 2016-12-19 13:03
这么做可以通过,但你指针指向的那块内存,其实已经不属于你这个指针合法拥有的内存了,只是这个指针还一直 ...

p = &i;   把指针指向了i的地址,并不是给原来申请的内存赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-20 14:36:14 | 显示全部楼层
顶起
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-20 19:19:30 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-20 23:59:36 | 显示全部楼层
挺好的问题,但是感觉大家回答的并不好哎……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-21 00:14:02 | 显示全部楼层
四十二 发表于 2016-12-20 23:59
挺好的问题,但是感觉大家回答的并不好哎……

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 17:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表