Читать книгу Ссылки и указатели в C++: от основ к безопасности и современному коду - - Страница 110

Задача 15: Выравнивание bit-field

Оглавление

Вы должны определить, чему равен результат оператора alignof для структуры B, содержащей битовое поле int x:4 и поле char y. Вспомните, как выравнивание работает для структур с битовыми полями: выравнивание структуры определяется выравниванием её самого строгого (наиболее выровненного) члена. Учтите, что даже если битовое поле занимает всего несколько бит, его базовый тип (int) всё ещё влияет на выравнивание структуры. Посколь耙йте, как компилятор размещает такие поля в памяти, и соотнесите это с требуемым выравниванием для int.

Подсказка: несмотря на то, что char y требует выравнивания в 1 байт, наличие битового поля с базовым типом int заставляет компилятор выровнять всю структуру по границе int, которая обычно составляет 4 байта. Обратите внимание, что alignof возвращает выравнивание типа, а не его размер, и что выравнивание структуры не может быть меньше выравнивания любого из её членов, включая базовые типы битовых полей.

Ссылки и указатели в C++: от основ к безопасности и современному коду

Подняться наверх