Я работаю над 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
.
Может кто-нибудь объяснить, в чем разница?