Взято из Википедии :
Например, когда размер слова компьютера составляет 4 байта (байт означает 8 бит), данные, которые должны быть прочитаны, должны иметь смещение памяти, кратное 4. Если это не так, например, данные начинаются с 14-го байта вместо 16-го байта, затем компьютер должен прочитать два 4-байтовых блока и выполнить некоторые вычисления до того, как запрошенные данные будут прочитаны, или это может вызвать ошибку выравнивания. Даже если предыдущая структура данных заканчивается 14-м байтом, следующая структура данных должна начинаться с 16-го байта. Два байта заполнения вставляются между двумя структурами данных, чтобы выровнять следующую структуру данных с 16-м байтом
Память должна быть multiple of 4 bytes
для более быстрого доступа и reduce computation
для better performance
.
таким образом, если память является адресно-байтовой адресацией, обычно состоящей из 4-х байтовых блоков, то в большинстве случаев мы знаем, где будет начинаться следующий адрес, например. как объяснено выше, также, если вы получите 14 bytes
(это должно быть 16 байтов 4 * 4 = 16), то вы знаете, сколько отступов вы должны использовать 16-14 = 2 bytes padding
. вот почему заполнение используется в не выровненной памяти.