当前位置: 技术问答>linux和unix
关于一些结构中的指针的使用疑惑
来源: 互联网 发布时间:2016-02-13
本文导语: 阅读了一些驱动源代码,对其中一些指针的使用总是感觉很不习惯..比如 a->bb = b; b->aa = a;总是能看到累世这样的互相指来指去的代码..一直弄不明白这样做的原因..不知道这算是一种约定呢还是有什么特别的地方.....
阅读了一些驱动源代码,对其中一些指针的使用总是感觉很不习惯..比如 a->bb = b; b->aa = a;总是能看到累世这样的互相指来指去的代码..一直弄不明白这样做的原因..不知道这算是一种约定呢还是有什么特别的地方..希望坛子里的高手能指点迷津..几乎每个函数里面都在互相指来指去的......but why????
|
简单的说是这类指针是为了提高效率,相互指来指去那是链表的一种具体表现,方便知道a就可以快速的找到b,反之依然;其它的由楼下的高手解说:)
|
个人觉得内核开发者只注重效率,绝大部分代码遵守linux的编码风格外..如果楼主不能改变,那么坚持下就习惯了:)
|
典型的双向链表,搜索方便,链接方便。
|
这是由操作系统的需求所产生的,为了提高效率,主要是为了满足在搜索查找时的方便而设,举个例子:
在内存管理上面,一个物理内存页被映射成虚拟内存,而且还要用于共享,那么有两方面的需求,一方面是从虚拟内存地址查找物理地址,另一方面是由物理地址查找出共享此物理页面的所有虚拟地址,那么请问LZ,不用这种互指的办法是用什么??在内核中类似于这种需求有很多
在内存管理上面,一个物理内存页被映射成虚拟内存,而且还要用于共享,那么有两方面的需求,一方面是从虚拟内存地址查找物理地址,另一方面是由物理地址查找出共享此物理页面的所有虚拟地址,那么请问LZ,不用这种互指的办法是用什么??在内核中类似于这种需求有很多