Я читаю эту статью:

http://en.wikipedia.org/wiki/Struct_%28C_programming_language%29

И это гласит следующее:

«Структура C напрямую соответствует типу данных на ассемблере того же самого использования, и оба ссылаются на непрерывный блок физической памяти, обычно ограниченный (измеренный) границами длины слова. Языковые реализации, которые могли бы использовать границы из полуслов или байтов (обеспечивая более плотную упаковку, используя меньше памяти), считались продвинутыми в середине восьмидесятых годов ».

Что такое граница длины слова?

1 ответ1

0

Некоторые архитектуры будут выравнивать данные по заданной длине слова (два байта, четыре байта и т.д.), Таким образом определяя эту структуру в C:

struct sample {
  int a;
  char b;
}

Может иметь размер восемь байт, даже если вы ожидаете, что он будет всего пять (четыре байта для a и один для b). Это гарантирует, что каждый участник начинает с позиции, кратной 4. И это зависит от архитектуры, где происходит компиляция. Если вам когда-нибудь понадобится форсировать упаковку, вы можете сделать это:

#pragma pack(1)
struct sample {
  int a;
  char b;
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .