free()函数释放指针之后,为何还能输出指针指向的内容?
答案:4 悬赏:0 手机版
解决时间 2021-01-18 09:32
- 提问者网友:轻浮
- 2021-01-18 00:16
free()函数释放指针之后,为何还能输出指针指向的内容?
最佳答案
- 五星知识达人网友:何以畏孤独
- 2021-01-18 01:49
因为释放指针,只是将指针所指的内存空间交还给系统,而指针变量的内容(即刚释放的内存地址)并为改变,所以还能输出。但此时的指针一般称之为“野指针”,是很危险的。
所以,一般要求释放指针后,紧接着将其置为空:
free(p);
p=NULL;
所以,一般要求释放指针后,紧接着将其置为空:
free(p);
p=NULL;
全部回答
- 1楼网友:蕴藏春秋
- 2021-01-18 04:38
你编译器的问题吧,我这里 printf("p=%s\n",p) ; 没有输出的。
// 不用对 malloc 返回的指针强制转换?
char *p = (char*)malloc(100);
// 不用对 malloc 返回的指针强制转换?
char *p = (char*)malloc(100);
- 2楼网友:洎扰庸人
- 2021-01-18 04:07
我认为不会输出
- 3楼网友:不想翻身的咸鱼
- 2021-01-18 02:56
p指针还存在,只是所指的内容随机改变了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯