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结构体的地址的低两位肯定都是零”,不是很明白,可否详细说一下~
thanks~
注意最后的
__attribute__((aligned(sizeof(long)))
,这告诉编译器,将结构体按long来对齐。在ia32体系里,sizeof(long)==4,也就是说,任何rb_node结构体的地址都是4的倍数,也就是低两位为零。