字节对齐
来源:互联网 发布:淘宝网登录密码加密 编辑:程序博客网 时间:2024/06/07 08:56
1. 对齐的作用和原因
各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐。其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对数据存放进行对齐,会在存取效率上带来损失。比如有些平台每次读都是从偶地址开始,如果一个int型(假设为32位系统)如果存放在偶地址开始的地方,那么一个读周期就可以读出这32bit,而如果存放在奇地址开始的地方,就需要2个读周期,并对两次读出的结果的高低字节进行拼凑才能得到该32bit数据。显然在读取效率上下降很多
例,一个int的地址是0x03的话,先是按地址0x00取int的第一个byte,然后按地址0x04取剩下的三个byte
2. 编译器是按照什么样的原则进行对齐的
- 数据类型自身的对齐
对于char型数据,其自身对齐值为1,对于short型为2,对于int,float,double类型,其自身对齐值为4,单位字节 - 结构体或者类的自身对齐值
其成员中自身对齐值最大的那个值 - 指定对齐值
pragma pack (value)时的指定对齐值value
3. 自然对齐
对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的
1 0
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- CUnit的用法
- [工程与建设]光学技术的重要性
- OC语言 正式协议---@protocol
- Codeforces Round #336 (Div. 2) 总结
- ios json格式解析为为NSDictionary
- 字节对齐
- PHP系列 - Autoload 自動載入
- python
- Win10开发:SQLite 的使用
- 发布构建到maven中央仓库
- 文章标题
- 贪吃蛇---练手项目1
- 解密ThreadLocal
- MFC ClistCtrl.GethotItem()返回值始终 -1