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

Игнорирование выравнивания, padding и alignof

Оглавление

Частая ошибка проектировать структуры без учёта порядка полей: смешивать маленькие и большие типы, приводя к огромному padding. Например, чередование char и double "раздувает" структуру в 2 раза, тратя память в массивах или кэше. Ещё: ручное кастирование указателей без проверки alignment int* p = (int*)char_ptr; если char_ptr не кратен 4 UB, краш на non-x86. Игнорирование alignof в шаблонах: аллокаторы без over-alignment в C++11-14 приводят к misalignment. Или использование packed структур (#pragma pack(1)) везде экономит память, но замедляет доступ и не портативно.

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

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