专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

结构体 填充字段 知道的

发布时间:2011-06-28 16:17:15 文章来源:www.iduyao.cn 采编人员:星星草
结构体 填充字段 知道的高手请进
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
------解决方案--------------------
探讨

引用:

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;
……

------解决方案--------------------
字节对齐
------解决方案--------------------
如果不填充那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;加不加应该没关系啊
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: