struct A
{
char a;//1+3
int b;//4
};// 8
struct B
{
char a;//1+1
short b;//2
int c;//4
};//8
struct C
{
int a;//4
char b;//1
};//8
class D
{};//1
struct E
{
char a; //1
int b; //4
static double c;//不算
};//8
struct G//位段
{
int a : 7;//a占7位
int b : 8;//b占8位
int c : 33;//错误,最大为32,因为int型4个字节,32位
int d : 23;
};//整型大小的倍数,4
union F
{
char a;//1
short b;//2
};//2
以上为一些内存对齐的例子;
用struct A为例,进行图解说明:
char为1个字节,int为4个字节,为了内存对齐,101、102、103位置空掉不用,struct 结构体的大小一定是其每个变量类型的整数倍