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

Задача 17: Размер с packed

Оглавление

Вы должны написать программу, которая определяет размер структуры, содержащей один символ и одно целое число, при условии, что компилятор не вставляет дополнительные байты выравнивания между полями. Для этого используйте директиву управления выравниванием, чтобы упаковать поля структуры в памяти без промежутков. Выведите размер этой структуры в байтах с помощью оператора sizeof.

Подсказка: в C++ выравнивание полей структуры по умолчанию добавляет «пустые» байты между полями разного размера, чтобы ускорить доступ к данным. Чтобы отключить это поведение, примените #pragma pack(1) перед объявлением структуры и #pragma pack() после неё. Вспомните, что char занимает 1 байт, а int – обычно 4 байта на большинстве платформ.

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

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