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

Предположение, что sizeof = сумма полей, и игнорирование "реального" размера

Оглавление

Новички часто рассчитывают память как сумму sizeof полей: malloc(sum_sizes) для структуры, но без padding аллокатор выделит мало, и поля "съедут", вызвав UB или краш. Ещё: сериализация (запись в файл/сеть) без учёта padding данные коррумпированы на другой платформе. Или массивы структур: ожидание плотной упаковки, но padding "раздувает" кэш, замедляя loop'ы. В legacy-коде: #pragma pack(1) везде для "экономии" да, sizeof уменьшится, но доступ замедлится, и портативность сломается (UB на non-x86).

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

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