arm的字节对齐问题
来源:互联网 发布:手机淘宝怎样取消投诉 编辑:程序博客网 时间:2024/06/11 17:02
VC中提供了#pragma pack(n)来设定变量以n字节对齐方式。n字节对齐就是说变量存放的起始地址的偏移量有两种情况:第一、如果n大于等于该变量所占用的字节数,那么偏移量必须满足默认的对齐方式,第二、如果n小于该变量的类型所占用的字节数,那么偏移量为n的倍数,不用满足默认的对齐方式。结构的总大小也有个约束条件,分下面两种情况:如果n大于所有成员变量类型所占用的字节数,那么结构的总大小必须为占用空间最大的变量占用的空间数的倍数;
否则必须为n的倍数。下面举例说明其用法。
#pragma pack(push) //保存对齐状态
#pragma pack(4)//设定为4字节对齐
struct test
{
char m1;
double m4;
int m3;
};
#pragma pack(pop)//恢复对齐状态
以上结构的大小为16,下面分析其存储情况,首先为m1分配空间,其偏移量为0,满足我们自己设定的对齐方式(4字节对齐),m1占用1个字节。接着开始为m4分配空间,这时其偏移量为1,需要补足3个字节,这样使偏移量满足为n=4的倍数(因为sizeof(double)大于n),m4占用8个字节。接着为m3分配空间,这时其偏移量为12,满足为4的倍数,m3占用4个字节。这时已经为所有成员变量分配了空间,共分配了16个字节,满足为n的倍数。如果把上面的#pragma pack(4)改为#pragma pack(16),那么我们可以得到结构的大小为24。
=========
编译器不同在存放结构体方式可能不同,因此对齐也会有不同
- arm的字节对齐问题
- ARM平台的字节对齐问题
- ARM平台的字节对齐问题
- ARM字节对齐问题详解
- ARM字节对齐问题详解
- 关于arm 的字节对齐
- ARM程序由于字节对齐引起的问题深入分析
- 近来准备研究一下arm的字节对齐问题
- ARM平台 结构体字节对齐引起的一个问题
- ARM程序由于字节对齐引起的问题深入分析
- ARM程序由于字节对齐引起的问题深入分析
- 字节对齐的问题
- 字节对齐的问题
- 字节对齐的问题
- 字节对齐的问题
- 字节对齐的问题
- Q24Plus ARM 字节对齐
- ARM之字节对齐
- 应用程序的进入点
- Hungarian命名法
- 垃圾收集与删除文件
- 调试Release版本程序
- 怎样将1G硬盘变成120G的 (看之前发誓:不能做坏事)
- arm的字节对齐问题
- 今天发工资
- javascript网页开发 第二章
- 绝对精彩:程序员喝酒
- CSDN BLOG开始加广告了,顺便多说两句
- C++: The Complete Reference
- Ajax.net的未将对象引用设置到对象的实例
- mp3bar 改名为 wizimkit
- 有所取舍(7月30日 20:59)