free函数的一点疑问
请问free一个指针以后,这个指针还能不能再指向同类型的其它数据?比如 :
int i = 0;
int *p;
p = malloc( sizeof( int ) );
free( p );
p = &i;// 请问这样合不合法?
当然可以 free( p );只是释放了指针分配的内存地址,不是把指针扔了,所以扔可以给他赋予地址的 这么做可以通过,但你指针指向的那块内存,其实已经不属于你这个指针合法拥有的内存了,只是这个指针还一直指向那块儿内存而已,因为你并没有NULL只是FREE掉了,你这样赋值给那块内存,如果那块儿内存已经被分配给了别的指针,你这样去赋值就非法修改到了别的指针内容东西 感谢大家! 人造人 发表于 2016-12-18 14:27
当然可以
很感谢你 陌雨 发表于 2016-12-19 13:03
这么做可以通过,但你指针指向的那块内存,其实已经不属于你这个指针合法拥有的内存了,只是这个指针还一直 ...
p = &i; 把指针指向了i的地址,并不是给原来申请的内存赋值 顶起 conn 发表于 2016-12-20 14:36
顶起
感谢```` 挺好的问题,但是感觉大家回答的并不好哎…… 四十二 发表于 2016-12-20 23:59
挺好的问题,但是感觉大家回答的并不好哎……
{:10_277:}
页:
[1]