字节对齐详解++
来源:互联网 发布:淘宝客服售后回复话术 编辑:程序博客网 时间:2024/06/07 08:26
字节对齐详解文章见http://blog.csdn.net/weixing979/archive/2006/05/12/725638.aspx
A结构体做为B结构体成员的情况
则计算A的长度和A的有效对齐值,然后进行填充计算
如下结构体
#pragma pack(8)
struct s1
{
short a;
long b;
};
struct s2
{
char c;
s1 d;
};
s1做为s2的成员,s1的长度为8,s1的有效对齐值为4( s1的自身对齐值为4(成员short与long中的自身对齐值的最大值)
s1的有效对齐值为 min(4,8) = 4)
所以s2 的长度为 1 + 3(填充) + 8 = 12
如果设定 #pragma pack(4)
s1长度为8
s1的有效对齐值为 min(4,4) = 4
s2 的长度为 1 + 3(填充) + 8 =12
如果设定 #pragma pack(2)
s1长度为6
s1的有效对齐值为min(4,2) = 2
s2的长度为 1 + 1(填充) + 6 = 8
再看下一个例子
#pragma pack(8)
struct s1
{
short a;
double b;
};
struct s2
{
char c;
s1 d;
};
此时 s1长度为16,s1的有效对齐值为min(8,8) = 8 (其中s1的自身对齐值为double长度8)
s2的长度为1+7(填充)+16 = 24
如果设定 #pragma pack(4)
s1长度为12,s1的有效对齐值为min(8,4) = 4
s2的长度为1+3(填充)+12= 16
如果设定 #pragma pack(2)
s1长度为10,s1的有效对齐值为min(8,2)= 2
s2的长度为1+1(填充)+10 = 12
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/weixing979/archive/2006/05/13/727419.aspx
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- [转贴]字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 内存字节对齐详解
- 字节对齐详解
- vc双缓冲:VC++双缓冲实现方法
- uva 10004
- A/B测试全面指南
- mysql 字符集 character-set 概念学习
- 如何找更多的bug
- 字节对齐详解++
- Zero Copy I: User-Mode Perspective
- MFC 类型识别与动态创建
- JavaScript 中 void(0) 的含义(zz)
- 如何进行升级测试
- 递归和非递归打印螺旋矩阵
- 男人、女人这东西——
- 自己写的一个基于jquery多级菜单插件
- mmap 设备操作