为什么free函数释放掉动态内存后,不把指针置NULL,而造成没什么用的野指针?

 我来答
久孙倾3
2012-06-07 · TA获得超过790个赞
知道小有建树答主
回答量:348
采纳率:100%
帮助的人:357万
展开全部
所谓野指针是指:指向“垃圾”内存(不可用内存)的指针。
你的指针指向的地址,在没有free之前你还可以使用,而释放后就不能再使用了,所以就变成了野指针。
置NULL(0)的指针其实也是野指针,只不过因为0很容易用if来判断,所以人为的把指向0的指针区别出来不当野指针而已。
简单来说就是因为人们认为指向0的指针就不是野指针而已。但是置不置0从某些角度来说没啥关系。
匿名用户
2012-06-07
展开全部
为了效率
有时候指针是局部变量释放掉内存后,函数结束了指针变量自然就不存在了
这时置为NULL不是多此一举
需要的时候编写者在代码里自行添加

c语言的设计初衷就是为了保持高效率,但同时提高代码的可读性。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
r1renhw
2012-06-07 · TA获得超过1577个赞
知道小有建树答主
回答量:810
采纳率:100%
帮助的人:419万
展开全部
free前
指针指向了一个内存空间,这是合法内存,利用指针可以正常访问该空间

free后,
指针指向的这段空间被释放了,这段内存摇身成为不可用的”垃圾“内存
但是指针本身还存在,并且值也没变
还是指向了这段空间
这段free前可用free后成为垃圾内存的内存

free后属于指向非法内存块

这就是野指针
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式