Какова цель HTML & ldquo; no-js & rdquo; учебный класс?

Поскольку a и c не являются смежными, каждый из них резервирует пространство памяти полного int. Если вы перемещаете a и c вместе, размер структуры становится 8 байтами.

Кроме того, вы сообщаете компилятору, что хотите, чтобы a занимал только 1 бит , а не 1 байт. Поэтому, хотя a и c рядом друг с другом должны занимать всего 3 бита (все еще под одним байтом), комбинация a и c по-прежнему выравнивается по словам в памяти на вашем 32-битном и, следовательно, занимая полные 4 байта в дополнение к int b.

Аналогичным образом вы обнаружите, что

struct s{
unsigned int b;
short s1;
short s2;
};

занимает 8 байтов, а

struct s{
short s1;
unsigned int b;
short s2;
};

занимает 12 байтов, потому что в последнем случае два шорта каждый сидят в своем собственном 32-битном выравнивании.

489
задан Pranav 웃 10 August 2013 в 10:07
поделиться