Типы данных - порядок и размер кода - PullRequest
1 голос
/ 24 января 2012

В c / c ++, как упорядочение переменных с различными типами данных влияет на размер кода?

Пример, который я видел, включает 4 структуры, каждая с 4 переменными.Переменные имели тип int, char, float и BYTE;каждая из структур имела одинаковое количество переменных (то есть 4) и называлась одинаковой в каждой структуре.Единственным отличием был порядок переменных.

Я понимаю, что integer, char и float имеют разные размеры (например, int 4 байта и т. Д.), Но как расположение этих типов влияет на размер кода.

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 24 января 2012

Добро пожаловать в чудесный мир Структурная обивка .

0 голосов
/ 24 января 2012

Не вдаваясь в специфичные для компилятора опции для заполнения структуры, лучший совет - разместить более крупные элементы в передней части структуры и двигаться вниз. В вашем примере я бы заказал их float, int, BYTE и char.

Каждый тип имеет выравнивание памяти, которое лучше всего подходит для него; это будет размер шрифта или больше. Компилятор управляет этим для вас, поэтому большую часть времени вам не нужно об этом беспокоиться, он вставит отступ в структуру, чтобы следующий элемент находился в своем собственном оптимальном выравнивании. Перемещаясь по порядку от наибольшего к наименьшему, вы максимизируете вероятность того, что следующий элемент уже будет на границе и не будет нуждаться в заполнении.

...