Использование struct padding
Какая польза от структуры заполнения в C?
2 ответа
Некоторые архитектуры будут работать лучше, если будут выполняться только выровненные обращения, поэтому размещение 32-битных объектов на 32-битных границах и 64-битных объектов на 64-битных границах может повысить скорость вашего приложения.
Некоторые архитектуры совершенно неспособны осуществлять несогласованные доступы, и на этих архитектурах отсутствие заполнения может стать настоящей катастрофой.
См. Эту статью в Википедии для получения дополнительной информации, но в основном это для того, чтобы убедиться, что структура занимает точное число байтов - что, как утверждает Steve314, означает, что sizeof
является точным кратным выравнивания.
Выравнивание данных означает размещение данных со смещением памяти, равным некоторому кратному размеру слова, что повышает производительность системы благодаря тому, как процессор обрабатывает память. Чтобы выровнять данные, может быть необходимо вставить несколько бессмысленных байтов между концом последней структуры данных и началом следующей, которая является заполнением структуры данных.
Вы также должны знать, что, хотя программисту было очень важно знать об этом, теперь стало меньше, потому что он часто обрабатывается компилятором для вас. Будут опции компилятора, которые позволят вам контролировать процесс.