首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

结构体 填充字段 知道的

2012-02-08 
结构体 填充字段知道的高手请进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
[解决办法]

探讨

引用:

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;加不加应该没关系啊

热点排行
Bad Request.