以下是引用nuciewth在2006-12-12 22:28:22的发言:
free (p); 释放这个指针,也就说它从此不存在了。
free (p); 释放这个指针,也就说它从此不存在了。
不是释放P,而是释放P所占据的空间。换而言之,char *p 与 int i 一样,除非程序退出,否则始终存在。
九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。 -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。 -毛泽东
不是释放P,而是释放P所占据的空间。换而言之,char *p 与 int i 一样,除非程序退出,否则始终存在。
指针所指指的地址返回给系统了
关于指针的其他的什么也不变,例如所指地方
呵呵,没想到一个小小的问题引来大家议论,都怪我没解释啊
其实和版主说的一样
指针p还是存在的,它所指向也并没有变;
如果还有什么争议让我们做个测试:
......
int a=2;
int *p=&a;
free(p);
printf("%d",*p);
......
看了结果就知道啦
呵呵,没想到一个小小的问题引来大家议论,都怪我没解释啊
其实和版主说的一样
指针p还是存在的,它所指向也并没有变;
如果还有什么争议让我们做个测试:
......
int a=2;
int *p=&a;
free(p);
printf("%d",*p);
......
看了结果就知道啦
孺子不可教也
呵呵,没想到一个小小的问题引来大家议论,都怪我没解释啊
其实和版主说的一样
指针p还是存在的,它所指向也并没有变;
如果还有什么争议让我们做个测试:
......
int a=2;
int *p=&a;
free(p);
......
看了结果就知道啦
操作系统回收空间后,并不一定也把该空间的内容都清掉...
而且你这个,free用得也不恰当,这算是哪门的例子
理解了!
呵呵,没事儿,三人行必有我师;谢谢你的提醒!