结构体 填充字段 知道的高手请进 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;加不加应该没关系啊