|
很明显为了充分利用空间,把parent和color两个“信息”都放在这个字段里了。
这里有个问题,就是他是用unsigned long类型定义的。经我测,在32位linux里,sizeof(unsigned long) == sizeof(struct rb_node *) == 4
在64位机器上,sizeof(unsigned long) == sizeof(struct rb_node *) == 8
所以这样使用没问题。
但是我发现在其它的系统里(比如AIX 64位系统),
sizeof(unsigned long) == 4
sizeof(struct rb_node*) == 8
意味着这样的代码有一点不确定性?,能不能在定义时,直接这样定义:
struct rb_node * rb_parent_color; |
|