Обычно байты заполнения обеспечивают правильное выравнивание данных.Например:
struct x {
int a; // four bytes
char b; // one byte
// three bytes slack
int c; // four bytes
} xx;
вероятно будет иметь свободные байты между b
и c
, чтобы выровнять c
по правильной границе.
Вы можете проверить это, увидев, что1009 * дает вам (12 в случае выше, хотя это зависит от реализации).
Некоторые архитектуры работают медленнее, если им приходится использовать (например) четырехбайтовое значение, которое не выровнено по четыремграница байта. Некоторые архитектуры не допускают этого на all , вместо этого генерируя исключение.