为了账号安全,请及时绑定邮箱和手机立即绑定

您好,请问free()函数释放指针之后,为什么还能输出指针指向的内容?

您好,请问free()函数释放指针之后,为什么还能输出指针指向的内容?

UYOU 2021-12-31 06:37:23
输出的数据,和指针被释放之前,一模一样,为什么
查看完整描述

2 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

因为释放指针,只是将指针所指的内存空间交还给系统,而指针变量的内容(即刚释放的内存地址)并为改变,所以还能输出。但此时的指针一般称之为“野指针”,是很危险的。
所以,一般要求释放指针后,紧接着将其置为空:
free(p);
p=NULL;

查看完整回答
反对 回复 2022-01-04
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

你编译器的问题吧,我这里 printf("p=%s\n",p) ; 没有输出的。
// 不用对 malloc 返回的指针强制转换?
char *p = (char*)malloc(100);

查看完整回答
反对 回复 2022-01-04
  • 2 回答
  • 0 关注
  • 353 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信