为什么free函数不在释放内存后,将指针置NULL,野指针有什么用

 我来答
dlengong
2012-06-07 · TA获得超过280个赞
知道小有建树答主
回答量:149
采纳率:0%
帮助的人:198万
展开全部
因为系统不知道有多少指针指向这块动态申请的内存,假如只有一个指针指向这块内存,那么把该指针置NULL可以避免野指针,但是如果有多个指针呢,如
int * ptr1=(int *)malloc(20*sizeof(int ));
int * ptr2=ptr1; //有两个指针指向这块动态申请的内存
... //做一些操作
free(ptr1);
即使在free函数中将ptr1置NULL,ptr2仍然是野指针
所以free函数索性不管,让用户自行处理
porker2008
2012-06-07 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部
野指针没用,应该设置为NULL,但如果之后在给指针赋新的值之前不会再访问到,那么也无所谓
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a9dc1a39ac4
2012-06-07 · TA获得超过2639个赞
知道小有建树答主
回答量:954
采纳率:0%
帮助的人:304万
展开全部
因为free函数得到的是实参 无法修改调用者传给他的变量的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式