境界合わせに付いて知る
#include <stdio.h>
struct A {
char a1;
int a2;
char a3;
};
struct B {
char a1;
char a3;
int a2;
};
int
main()
{
printf("A=%d B=%d\n", sizeof(struct A), sizeof(struct B));
return (0);
}
A=12 B=8 # 本来ならば構造体Aと構造体Bのサイズは同じはずであるしかし32bit環境では4byteずつalignmentされるため # 構造体Aの方は要素ごとにalignmentされ構造体Bの方はa1とa3がまとめてalignmentされるためこのような結果になる