linux内核中红黑树定义的理解-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

linux内核中红黑树定义的理解

linux内核中红黑树的一个定义:

    struct rb_node
{
    unsigned long rb_parent_color;
#define RB_RED 0
#define RB_BLACK 1
    struct rb_node *rb_right;
    struct rb_node *rb_left;
} __attribute__((aligned(sizeof(long))));

看帖子说“在IA-32上,任何rb_node结构体的地址的低两位肯定都是零”,不是很明白,可否详细说一下~

展开
收起
a123456678 2016-06-17 15:06:16 1607 0
1 条回答
写回答
取消 提交回答
  • a123456678

    注意最后的 __attribute__((aligned(sizeof(long))),这告诉编译器,将结构体按long来对齐。在ia32体系里,sizeof(long)==4,也就是说,任何rb_node结构体的地址都是4的倍数,也就是低两位为零。

    2019-07-17 19:42:49
    赞同 展开评论 打赏
问答分类:
相关产品:
问答排行榜
最热
最新
相关电子书
更多
Decian GNU/Linux安全合规之路
立即下载
从 Linux 系统内核层面来解决实际问题的实战经验
立即下载
冬季实战营第二期:Linux操作系统实战入门
立即下载