为什么free函数释放掉动态内存后,不把指针置NULL,而造成没什么用的野指针?
3个回答
2012-06-07
展开全部
为了效率
有时候指针是局部变量释放掉内存后,函数结束了指针变量自然就不存在了
这时置为NULL不是多此一举
需要的时候编写者在代码里自行添加
c语言的设计初衷就是为了保持高效率,但同时提高代码的可读性。
有时候指针是局部变量释放掉内存后,函数结束了指针变量自然就不存在了
这时置为NULL不是多此一举
需要的时候编写者在代码里自行添加
c语言的设计初衷就是为了保持高效率,但同时提高代码的可读性。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
free前
指针指向了一个内存空间,这是合法内存,利用指针可以正常访问该空间
free后,
指针指向的这段空间被释放了,这段内存摇身成为不可用的”垃圾“内存
但是指针本身还存在,并且值也没变
还是指向了这段空间
这段free前可用free后成为垃圾内存的内存
free后属于指向非法内存块
这就是野指针
指针指向了一个内存空间,这是合法内存,利用指针可以正常访问该空间
free后,
指针指向的这段空间被释放了,这段内存摇身成为不可用的”垃圾“内存
但是指针本身还存在,并且值也没变
还是指向了这段空间
这段free前可用free后成为垃圾内存的内存
free后属于指向非法内存块
这就是野指针
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询