free指针后再给指针赋值,为什么不报错?

指针被free掉后,指向垃圾区域,为什么还能给指针赋值?原理是怎样的?比如strcpy(str,"hello")... 指针被free掉后,指向垃圾区域,为什么还能给指针赋值?原理是怎样的? 比如strcpy(str,"hello") 展开
 我来答
ydnhwan
推荐于2016-09-09 · TA获得超过443个赞
知道小有建树答主
回答量:222
采纳率:0%
帮助的人:320万
展开全部
你释放的是指针所指向的内容。指针本身不会被释放。
例如free(p);
p=NULL;
都是合法的。
但是如果你要访问*p则会出错

向被free掉的区域拷贝数据,其行为是未定义的。也就是说有可能正确也有可能错误。你将程序release发布一下,多试几台机子,估计就会出错了。
百度网友9cbba519c3
2010-09-29 · TA获得超过768个赞
知道小有建树答主
回答量:200
采纳率:0%
帮助的人:179万
展开全部
指针被free掉之后只是指针指向的那一部分空间被释放掉了,而指针本身就是一种指针变量,除非程序运行结束或其生存期结束了才消失!!!因此只要程序还在运行,该指针就可以再赋值!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式