Почему оператор sizeof при использовании в структурах всегда дает различное количество байтов , чем фактически используется структурой для хранения данных (что я ожидаю)?Использование оператора sizeof на структурах
1
A
ответ
1
От THIS размещать
Это из-за выравнивания структуры. Выравнивание структуры относится к способности компилятора вставлять неиспользуемую память в структуру , чтобы элементы данных были оптимально выровнены для лучшей производительности. Многие процессоры лучше всего работают, когда основные типы данных хранятся на байтовых адресах, кратных их размерам.
можно уменьшить размер структуры, помещая самые большие типы данных в начале структуры и самых маленьких типов данных в конце структуры
1
Это не всегда так. Это зависит от упаковки структуры компилятором. Опаковка зависит от правил выравнивания архитектуры.
Смежные вопросы
- 1. Вопросы о выравнивании памяти в структурах и переносимости оператора sizeof
- 2. Использование оператора new на не-pod-структурах + список инициализаторов
- 3. Использование оператора SizeOf на себя в определении массива статический член
- 4. поведение оператора sizeof?
- 5. SizeOf стоимости условного оператора:
- 6. Использование sizeof без скобок
- 7. Каков возвращаемый тип оператора sizeof?
- 8. Поведения SizeOf оператора в C
- 9. Размер массива без оператора sizeof
- 10. реализация оператора sizeof в C
- 11. Понимание оператора sizeof в C
- 12. Путаница SIZEOF оператора в C
- 13. Использование оператора «sizeof» в столбце массива в C
- 14. Использование оператора SIZEOF с режимом косвенной адресации в MASM
- 15. Как работает член доступа (точка) оператора на структурах в C?
- 16. Использование SizeOf для классов
- 17. Использование sizeof в C
- 18. Использование sizeof вместо literal
- 19. Использование SizeOf() с
- 20. целые диапазоны с помощью оператора SIZEOF
- 21. sizeof время компиляции оператора или время выполнения
- 22. Определение представления объекта FO и оператора SizeOf
- 23. комплексов Декларации оператора SizeOf в С
- 24. Использование SizeOf на ЬурейеЕ вместо локальной переменной
- 25. Использование таНоса на elemnt в структурах в C
- 26. Frama-C/WP/ACSL Правильное использование \ valid на структурах
- 27. Передача массива в качестве указателя на функцию и использование оператора sizeof()
- 28. Вложение массивов в структурах
- 29. Использование sizeof с char * array []
- 30. Использование sizeof ... внутри std :: enable_if
Padding. Пополнение полей. – cnicutar
В каком контексте? Потому что это «padding». Читайте о прокладке структуры. –
@cnicutar Вы могли бы прокомментировать это? – chanzerre