结构体字节对齐小结
来源:互联网 发布:windows 手写笔记软件 编辑:程序博客网 时间:2024/05/02 04:05
结构体字节对齐小结
1.字节对齐的原因一些平台对某些特定类型的数据,只能从特定地址开始存取。如有些存取是从偶地址开始,假设int(32位)的数据存在偶地址开始,则只需要一个周期就能拿到。但如果在奇地址开始,则除了要用2个周期读取外,还要对高低地址进行拼凑才能得到正确的数据。显然这是低效的。
2.一般编译器在编译程序时所遵循的三个原则(重要)
1)结构体变量的首地址能够被其最宽的基本类型成员的大小所整除
2)结构体每个成员相对于结构体首地址的偏移量是该成员大小的整数倍,必要时在成员之间加上填充值
3)结构体的总大小为结构体最宽基本类型成员大小的整数倍,必要时在最后一个成员后加上填充字节
3.在编程中考虑字节对齐
1)为了节省空间,基本原则是把结构中的变量按照类型大小由小到大声明,尽量减少中间的填补空间。
2)显式的进行填补空间,即在成员中插入char reserved[N]的方法占用空间,N的值为希望填补的大小。
eg:
假设sizeof(int) = 4; sizeof(short) = 2;
1.
struct A加3是因为上述2.2原因
{
char a;
int b;
short c;
}
sizeof(A) = sizeof(a)+3+sizeof(b)+sizeof(c)+2=12
加2是因为上述2.3原因
2.
struct B加1是因为上述2.2原因
{
char a;
short c;
int b;
}
sizeof(B) = sizeof(a)+1+sizeof(c)+sizeof(b)=8;
最后什么都没加是因为上述2.3原因
- 结构体字节对齐小结
- 结构体字节对齐
- 结构体字节对齐
- 结构体字节对齐
- 结构体字节对齐
- 结构体字节对齐
- 结构体字节对齐
- 结构体字节对齐
- 结构体字节对齐
- 结构体字节对齐
- 结构体字节对齐
- 结构体字节对齐
- 结构体字节对齐
- 结构体字节对齐
- 结构体字节对齐
- 结构体字节对齐
- 结构体字节对齐
- 结构体字节对齐
- VS2010引用App_Code下的类文件问题解决方法
- 市场情绪较为谨慎,非美维持区间震荡
- 市场情绪较为谨慎,非美维持区间震荡
- SWT Faq
- 演示cxGrid每一行根据业务逻辑显示不同图片的实例
- 结构体字节对齐小结
- iphone develop tips
- ios开发之向输出流写数据
- 11g新特性:result cache 结果缓存
- 我的XHTML思想建立001:中文网页制作中段落缩进的方法_HTML
- Windows Safe String (StrSafe库) 简介
- OC自学笔记
- System.map
- Eclipse的Dbug