结构体 填充字段知道的高手请进C专家编程中,结构体填充字段,struct pid_tag{unsigned int inactive :1uns
结构体 填充字段 知道的高手请进 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;加不加应该没关系啊