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