结构体 填充字段 知道的高手请进
C专家编程中,
结构体填充字段,
struct pid_tag{
unsigned int inactive :1;
unsigned int :1;
unsigned int refcount : 6;
unsigned int :0;
short pid_id;
struct pid_tag *link;
} 看不明白。
填充字段是否占内存空间?如果占,占多少?是否是后面填充的数值??这里很模糊,望理解的高手解释的清楚点。谢谢
[解决办法]
inactive占一位
[解决办法]
unsigned int inactive :1;
unsigned int :1;
unsigned int refcount : 6;
unsigned int :0;
由于一共8<32,因此一共占用sizeof(int)
[解决办法]
LZ看看这两篇吧,看完就懂了
http://apps.hi.baidu.com/share/detail/15820795
http://www.programfan.com/blog/article.asp?id=30210
[解决办法]
[解决办法]
字节对齐
[解决办法]
如果不填充那24个bit,
即:struct pid_tag{
unsigned int inactive :1;
unsigned int :1;
unsigned int refcount : 6;
// unsigned int :0;
short pid_id;
struct pid_tag *link;
}
引用:
unsigned int inactive :1;
unsigned int :1;
unsigned int refcount : 6;
unsigned int :0;
由于一共8<32,因此一共占用sizeof(int)
struct pid_tag{
unsigned int inactive :1;
unsigned int :1;
unsigned int refcount : 6;
unsigned int :0;
short pid_id;
struct pid_tag *link;
}
我sizeof上面的,结果是8
你确定是8么?什么编译器?我在vs2008下测试是12,unsigned int :0;加不加应该没关系啊