字节对齐详解
来源:互联网 发布:批判性思维工具 知乎 编辑:程序博客网 时间:2024/06/06 02:22
目录
一:字节对齐概述
二:字节对齐原则
三:设置编译器对齐系数n的两种方法
四:代码示例
正文
一:字节对齐概述
cpu根据自身处理器的字长和数据总线宽度确定一条指令寻址的位数,比如16位处理器每次访问16bit的数据,为了提高处理器效率,编译器会对不同数据类型的变量进行内存对齐。
二:字节对齐原则
字节对齐三原则:(以结构体数据类型为例)
1:确定有效对齐位数;
假设设置编译器的对齐位数为n,最终有效对齐位数为N,N=Min(n,结构体成员所占字节数),n和N都是以字节为单位;
2:结构体成员自身对齐;
确定有效对齐位数后,需满足结构体成员起始地址%N=0;
3:结构体整体对齐
结构体成员自身对齐后,结构体整体大小是有效对齐位N的整数倍;
三:设置编译器对齐系数n的两种方法
1:可以通过预编译指令#pragma pack(n),n=1,2,4,8,16来指定编译器的对齐系数n;
2:_attribute_机制,此机制为GUN C的扩展,适用GCC编译器, _attribute_ ((aligned (n)))可以指定编译器的对齐系数,_attribute_((packed))指定变量或者结构体或者共用体采用最小对齐模式,即一字节对齐,位域是位对齐;
四:代码示例
0 0
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- [转贴]字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 字节对齐详解
- 内存字节对齐详解
- 字节对齐详解
- 在Unity中使用ProtoBuffer进行数值表转换以及生成网络通信用的协议
- Leetcode Gas Station
- CodeForces 346A Alice and Bob
- Codeforces Round #363 (Div. 2)[B]One Bomb
- POJ 3320 Jessica's Reading Problem
- 字节对齐详解
- 应用内跳转百度,高德地图
- 【题】【矩阵】NKOJ 1901 喜欢奇数的面包师
- java基础学习(5)疯狂java讲义第4章课后习题解答源码
- Codeforces Round #363 (Div. 2) [C] Vacations
- Leetcode Sort Colors
- java 多态,向上转型,向下转型(强制转换)之间的理解(学习笔记而已,不一定全部准确)
- Python下安装Numpy,Scipy,Matlotlib
- Activity四种启动模式