目录
①结构体嵌套对齐以及结构体中含有数组的对齐②其余的对齐规则
基本的结构体对齐知识点击这里
①结构体嵌套对齐以及结构体中含有数组的对齐
32位系统环境 规则一:结构体中含有数组,数组元素类型和结构中其余的最大类型取较大者 对齐 规则二:结构体S2中嵌套结构体S1,则按照S1的最大元素类型和S2中各元素类型取较大者对齐 就是max(sizeof(struct S1),sizeof(max_type_of_S2))
注释的数字表示偏移量(就是地址)
#include
#include
struct S1 {
char a;// 0
double b;// 8-15
short c[2];//16-19,因为double的8比short的2大,引用规则一
//共24
};
struct S2 {
struct S1 a;// , 0-23
int b;//24-27
char c;//28
// 最后按S1的最大类型double的8字节对齐,因为double比S2的int和char字节数都大,最后
//整个S2按照8字节对齐
};
int main() {
using namespace std;
cout
struct S1 a;// 0-11,按4字节对齐
int b;//12-15,S2中S1类型按4字节对齐,int和char中比较大的是int,两个都一样是4字节,所以整个结构按4字节对齐
char c;//16
//原来占17字节,但是得按照4字节对齐,所以是20
};
int main() {
using namespace std;
cout |