struct x
{
char b;
short s;
char bb;
};
int main()
{
printf("%d",sizeof(struct x));
}
Вывод: 6
Я запускаю этот код на 32-битном компиляторе. вывод должен быть 8 байтов.
Мое объяснение -> 1. Символу требуется 1 байт, а следующий короткий занимает кратное 2, поэтому такой короткий создает заполнение 1 и занимает 2 байта, здесь 4 байта уже выделены. Теперь единственный левый член-символ занимает 1 байт, но поскольку объем выделяемой памяти кратен 4, общий объем памяти составляет 8 байт.