Я пытаюсь понять структуру прокладки. Ниже структуры дополняется:sizeof struct менее 4 B сообщается актуально
struct s {
int j;
char c;
int i;
};
==> SizeOf (структура s) = 12
Но для этой структуры это не дополнение. Зачем?
struct s {
char c;
}
==> SizeOf (структура с) = 1 ИЛИ
struct s {
short int i;
}
==> SizeOf (структура с) = 2
Почему обивка не применяется для вышеупомянутых двух Структуры?
Padding традиционно делается для того, чтобы поместить участников в смещения, которые хороши с точки зрения процессора. Если у вас только один член, смещение всегда будет равным нулю, нет необходимости в заполнении. –
Вы можете проверить [этот ответ] (http://stackoverflow.com/questions/12861582/why-is-padding-added-for-multiple-data-members-of-structures-and-not-for-single) –