c语言中结构体会发生对齐,这点大多数人都清楚,其目的是为了让cpu存取数据更快,但是为了提高存取的速度制定的规则是怎么样的?一直没找到靠谱的解释,网上给的多种说法,总感觉有些牵强,有特别懂的同志烦请留言赐教。
通过程序的实际运行大致得出如下结论:
1、较短长度的字节会补齐到4个字节(见例1);
2、如果多个连续较短字节,总长度未超过4字节,会补齐到4字节(见例2);
3、单个变量大于4字节但不是4的倍数的,会补齐到4的倍数(见例3);
//例1
struct S
{
int a;
char b;
};
//例2
struct S2
{
char x1;
short x2;
float x3;
char x4;
};
//例3
struct S3
{
char a[10];
int b;
};
int iSize1 = sizeof(struct S);
int iSize2 = sizeof(struct S2);
int iSize3 = sizeof(struct S3);
上述结果:
iSize1 = 8
iSize2 = 12
iSize3 = 16