2013-09-02 3 views
1

Почему оператор sizeof при использовании в структурах всегда дает различное количество байтов , чем фактически используется структурой для хранения данных (что я ожидаю)?Использование оператора sizeof на структурах

+1

Padding. Пополнение полей. – cnicutar

+0

В каком контексте? Потому что это «padding». Читайте о прокладке структуры. –

+0

@cnicutar Вы могли бы прокомментировать это? – chanzerre

ответ

1

От THIS размещать

Это из-за выравнивания структуры. Выравнивание структуры относится к способности компилятора вставлять неиспользуемую память в структуру , чтобы элементы данных были оптимально выровнены для лучшей производительности. Многие процессоры лучше всего работают, когда основные типы данных хранятся на байтовых адресах, кратных их размерам.

можно уменьшить размер структуры, помещая самые большие типы данных в начале структуры и самых маленьких типов данных в конце структуры

1

Это не всегда так. Это зависит от упаковки структуры компилятором. Опаковка зависит от правил выравнивания архитектуры.

Смежные вопросы