+ -
当前位置:首页 → 问答吧 → [讨论]关于rbtree.h里的struct rb_node.rb_parent_color 的长度

[讨论]关于rbtree.h里的struct rb_node.rb_parent_color 的长度

时间:2010-05-15

来源:互联网

很明显为了充分利用空间,把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;

作者: tomgrean   发布时间: 2010-05-15

可以,处理时做下相应的类型转换就可以了。

作者: orphen   发布时间: 2010-05-15