位域结构体的字节对齐
来源:互联网 发布:环保软件项目 编辑:程序博客网 时间:2024/05/20 13:08
使用位域的主要目的是压缩存储,其大致规则为:
一个位域必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空
间不够存放另一位域时,应从下一单元起存放该位域。
如果相邻位域字段的类型相同,且其位宽之和小于类型的 sizeof 大小,则
后面的字段将紧邻前一个字段存储,直到不能容纳为止。
如果相邻位域字段的类型相同,但其位宽之和大于类型的 sizeof 大小,则
后面的字段将从新的存储单元开始,其偏移量为其类型大小的整数倍。
如果相邻的位域字段的类型不同,则各编译器的具体实现有差异,vc6.0 采
取不压缩方式,Dev-C++和gcc 采取压缩方式。
如果位域字段之间穿插着非位域字段,则不进行压缩。
例如:
1 struct A 2 { 3 int a1 : 4 int a2 : 5 char b; 6 int c : 4 7 short d; 8 }B; 9 10 a)4、8 或16字节对齐 11 a1+a2: 4 * 0 = 0 12 b: 4 * 1 = 4 13 c: 4 * 2 = 8 14 d: 2 * 6 = 12 sizeof(B) = 16 15 16 b) 2字节对齐 17 a1+a2: 2 * 0 = 0 (int为4 字节, 大于对齐字节(2 字节),以2 字节计算) 18 b: 1 * 4 = 4 19 c: 2 * 3 = 6 (int 为4 字节, 大于对齐字节(2 字节),以2 字节计算) 20 d: 2 * 5 = 10 21 22 c)1字节对齐 23 a1+a2 = 14位,小于4 字节(int 类型为4 字节),所以,a1 和a2放在一起 24 sizeof(B) = 4 + 1 + 4 + 2 = 11
0 0
- 位域结构体的字节对齐
- 结构体字节对齐 只看高亮 三原则两注意 & 为什么要字节对齐 & 位域
- 结构体的字节对齐
- 结构体字节的对齐
- 结构体的字节对齐
- 结构体字节对齐和位域对齐——VC、gcc
- 结构体字节对齐和位域对齐——VC、gcc
- 结构体字节对齐和位域对齐——VC、gcc
- 结构体字节对齐和位域对齐——VC、gcc
- 结构体与位域的对齐
- 带有位域的结构体对齐
- 结构体与位域的对齐:
- 结构体与位域的对齐
- 结构体与位域的对齐
- 位域字节对齐
- 位域/字节对齐
- 位域字节对齐
- 结构体字节对齐
- redis与memcached比较
- Linux编程获取本地IP
- Nginx配置配置文件nginx.conf的设置
- Linux 中write()函数的出错情况及处理
- Linux编程下EAGAIN和EINTR宏的含义及处理
- 位域结构体的字节对齐
- Windows(64bit)安装VBox虚拟机
- 网络TCp数据的传输设计(黏包处理)
- 使用uwsgi+nginx运行django程序
- TCP数据包的封包和拆包
- C语言解析Ini格式文件
- gdb调试
- Linux中多线程信号的处理
- 服务器的基本问题避免