free()函数释放指针之后,为何还能输出指针指向的内容?

输出的数据,和指针被释放之前,一模一样,为什么... 输出的数据,和指针被释放之前,一模一样,为什么 展开
 我来答
笃侠6A
推荐于2017-11-24 · TA获得超过3734个赞
知道大有可为答主
回答量:3205
采纳率:75%
帮助的人:3254万
展开全部
因为释放指针,只是将指针所指的内存空间交还给系统,而指针变量的内容(即刚释放的内存地址)并为改变,所以还能输出。但此时的指针一般称之为“野指针”,是很危险的。
所以,一般要求释放指针后,紧接着将其置为空:
free(p);
p=NULL;
百度网友b0e28cae4
2011-11-11 · TA获得超过4016个赞
知道大有可为答主
回答量:1275
采纳率:85%
帮助的人:610万
展开全部
你编译器的问题吧,我这里 printf("p=%s\n",p) ; 没有输出的。

// 不用对 malloc 返回的指针强制转换?
char *p = (char*)malloc(100);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
caoyujia0410
2011-11-12
知道答主
回答量:16
采纳率:100%
帮助的人:10.7万
展开全部
p指针还存在,只是所指的内容随机改变了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Microsoftvisul
2011-11-11
知道答主
回答量:54
采纳率:0%
帮助的人:26.2万
展开全部
我认为不会输出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式