代码农民 发表于 2016-12-18 11:14:11

free函数的一点疑问

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


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

人造人 发表于 2016-12-18 14:27:56

当然可以

lzgw 发表于 2016-12-18 21:29:30

free( p );只是释放了指针分配的内存地址,不是把指针扔了,所以扔可以给他赋予地址的

陌雨 发表于 2016-12-19 13:03:45

这么做可以通过,但你指针指向的那块内存,其实已经不属于你这个指针合法拥有的内存了,只是这个指针还一直指向那块儿内存而已,因为你并没有NULL只是FREE掉了,你这样赋值给那块内存,如果那块儿内存已经被分配给了别的指针,你这样去赋值就非法修改到了别的指针内容东西

代码农民 发表于 2016-12-19 19:14:34

感谢大家!

代码农民 发表于 2016-12-19 19:16:12

人造人 发表于 2016-12-18 14:27
当然可以

很感谢你

xw0314 发表于 2016-12-20 11:14:55

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

p = &i;   把指针指向了i的地址,并不是给原来申请的内存赋值

conn 发表于 2016-12-20 14:36:14

顶起

代码农民 发表于 2016-12-20 19:19:30

conn 发表于 2016-12-20 14:36
顶起

感谢````

四十二 发表于 2016-12-20 23:59:36

挺好的问题,但是感觉大家回答的并不好哎……

代码农民 发表于 2016-12-21 00:14:02

四十二 发表于 2016-12-20 23:59
挺好的问题,但是感觉大家回答的并不好哎……

{:10_277:}
页: [1]
查看完整版本: free函数的一点疑问