Итак, скажем, у меня есть структура, которая выглядит следующим образом (оказывается, довольно часто встречается в реальном мире):
struct foo {
char[24] bar;
uint32_t fnord;
uint32_t quux;
}__attribute__((aligned(4));
Что такое шаг bar
, то есть&bar[1] - &bar[0]
, учитывая, что это в struct foo
?Это имеет значение для sizeof(foo)
, который, я уверен, я хотел бы быть 32, и я также хотел хорошие быстрые операции выравнивания на foo.fnord
и foo.quux
, иначе он не был бы выровнен во-первых.