私は 32 ビット マシンで作業しているので、メモリ アラインメントは 4 バイトである必要があると思います。私はこの構造体を持っているとしましょう:
typedef struct {
unsigned short v1;
unsigned short v2;
unsigned short v3;
} myStruct;
単純な追加サイズは 6 バイトで、アラインされたサイズは 8 である必要があると思いますが、sizeof(myStruct)
6 が返されます。
ただし、次のように書くと:
typedef struct {
unsigned short v1;
unsigned short v2;
unsigned short v3;
int i;
} myStruct;
単純な追加サイズは 10 バイト、整列サイズは 12 で、今回はsizeof(myStruct) == 12
.
誰かが違いを説明できますか?