开发者社区 问答 正文

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 1998 分享 版权
1 条回答
写回答
取消 提交回答
  • 注意最后的 __attribute__((aligned(sizeof(long))),这告诉编译器,将结构体按long来对齐。在ia32体系里,sizeof(long)==4,也就是说,任何rb_node结构体的地址都是4的倍数,也就是低两位为零。

    2019-07-17 19:42:49
    赞同 展开评论