Читать книгу Ссылки и указатели в C++: от основ к безопасности и современному коду - - Страница 101
Задача 6: Выравнивание структуры
ОглавлениеВы должны определить выравнивание структуры, содержащей сначала int, а затем double. Выравнивание структуры определяется требованием её самого строго выровненного члена – то есть элемента, которому нужно начинаться по адресу, кратному наибольшему значению. Поскольку double обычно требует 8-байтового выравнивания, а int – 4-байтового, выравнивание всей структуры будет равно 8. Это значение гарантирует, что при размещении массива таких структур каждый экземпляр начинается по адресу, подходящему для хранения double.
Подсказка: функция alignof возвращает степень выравнивания типа в байтах, которая совпадает с выравниванием его самого требовательного поля. В большинстве реализаций sizeof(double) равен 8, и его выравнивание также 8, поэтому alignof(S) возвращает 8, даже если int занимает меньше места и имеет меньшее требование выравнивания.