字节对齐
结构体字节对齐:(结构体成员的数据类型为基本数据类型(int,double,char,short,long等))
结构体的总大小是结构体成员中最宽基本数据类型大小的整数倍
#include<iostream>
using namespace std;
struct S0
{
int a;
char b;
short c;
};
struct S1
{
char b;
int a;
short c;
};
struct S2
{
short d;
char b;
short e;
int a;
short c;
};
void main()
{
S0 s0;
cout << sizeof(s0) << endl;
S1 s1;
cout << sizeof(s1) << endl;
S2 s2;
cout << sizeof(s2) << endl;
}
输出结果:
8
12
16
总结:对于这种成员数据类型都为基本数据类型的结构体:
1.若最宽基本数据类型的成员位置在结构体成员的边上(最上边/最下边),则其它小的数据类型字节数之和与最宽的类型大小对齐(整数倍),而结构体的大小就是最宽的数据类型大小与其它的对其后的大小(整数倍)之和;
如S0:
最宽(大)的类型为int(4字节) 其它:char(1个字节),short(2个字节) 总共3字节,与int对齐后为4字节,则结构体S0的字节大小为