含位域结构体的sizeof
来源:互联网 发布:张健 网络空间 编辑:程序博客网 时间:2024/05/10 06:23
使用位域的主要目的是压缩存储,其大致规则为:
1) 如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof大小,则后面的字段将紧邻前一个字段存储,直到不能容纳为止;
2) 如果相邻位域字段的类型相同,但其位宽之和大于类型的sizeof大小,则后面的字段将从新的存储单元开始,其偏移量为其类型大小的整数倍;
3) 如果相邻的位域字段的类型不同,则各编译器的具体实现有差异,VC6采取不压缩方式,Dev-C++采取压缩方式;
4) 如果位域字段之间穿插着非位域字段,则不进行压缩;
5) 整个结构体的总大小为最宽基本类型成员大小的整数倍。
测试:
struct test
{
char a:1;
char :2;
long b:3;
char c:2;
};
test t1;
int len=sizeof(t1); //len=12
struct test
{
char a:1;
char :2;
char b:3;
long c:2;
};
test t1;
int len=sizeof(t1); //len=8
struct test
{
char a:1;
char :2;
char b:3;
char c:2;
};
test t1;
int len=sizeof(t1); //len=1
转自:http://www.cnitblog.com/wuzhimeili/archive/2007/01/17/21963.html
- 结构体(含位域)的sizeof
- 结构体(含位域)的sizeof
- 含位域结构体的sizeof
- 含位域结构体的sizeof
- 含位域结构体的sizeof
- 含位域结构体的sizeof
- 结构体(含位域)的sizeof
- 结构体(含位域)的sizeof
- 含位域结构体的sizeof
- 结构体的sizeof
- 结构体的sizeof
- 结构体的sizeof
- 结构体的sizeof
- 结构体的sizeof
- 结构体(含位域)的sizeof 对齐相关
- 结构体的sizeof问题
- 结构体的sizeof问题
- 结构体的sizeof详解
- No daylight saving time now(遇到奇怪的夏令时)
- Ajax的一点理解
- Linux删除乱码文件
- 11月14,今天第一次打squash
- 23 Nov.2007 今天去参加一个讲座(HB studio)--还有颈椎炎
- 含位域结构体的sizeof
- 今天去shopping了
- halifax华人协会圣诞party
- 在网页中控制wmplayer播放器
- 实习报告
- 24 Nov. 今天又下雪了
- 什么是CS和BS结构,两种结构的区别
- 开始喜欢上linux了
- 今天