内存地址
0x4000 0x34
0x4001 0x12
而在 Big-endian 模式 CPU 内存中的存放方式则为:
内存地址
0x4000 0x12
0x4001 0x34
看下面的数据结构声明:
struct A
{ char c; int i; }; struct A a; |
2
1.数据类型自身的对齐值:
2.结构体或者类的自身对齐值:
3.指定对齐值:
4.数据成员、结构体和类的有效对齐值:
有效对齐N,就是表示“对齐在N上”,也就是说该数据的"存放起始地址%N=0"。.而数据结构中的数据变量都是按定义的先后顺序来排放的。
struct A { char c;
};
首先来看sizeof(struct A),假设A的起始地址为0x00,做这样的假设只是为了更方便理解,其实A始终被放在对齐边界上。 |