我是靠谱客的博主 温暖冥王星,最近开发中收集的这篇文章主要介绍【Linux】list_for_each()与list_for_each_safe()的区别,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
list_for_each()的定义:
list_for_each_safe()的定义:
由上面两个对比来看,list_for_each_safe()函数比list_for_each()多了一个中间变量n
当在遍历的过程中需要删除结点时,来看一下会出现什么情况:
list_for_each():list_del(pos)将pos的前后指针指向undefined state,导致kernel panic,list_del_init(pos)将pos前后指针指向自身,导致死循环。
list_for_each_safe():首先将pos的后指针缓存到n,处理一个流程后再赋回pos,避免了这种情况发生。
因此之遍历链表不删除结点时,可以使用list_for_each(),而当由删除结点操作时,则要使用list_for_each_safe()。
最后
以上就是温暖冥王星为你收集整理的【Linux】list_for_each()与list_for_each_safe()的区别的全部内容,希望文章能够帮你解决【Linux】list_for_each()与list_for_each_safe()的区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复