Это вопрос, который был вызван Rob Walker для ответа здесь.
Предположим, что я объявляю класс/структуру следующим образом:
struct
{
char A;
int B;
char C;
int D;
};
Можно ли предположить, что эти члены будут объявлены точно в этом порядке в памяти или это зависит от компилятора? Я спрашиваю, потому что я всегда предполагал, что компилятор может делать с ним все, что захочет.
Это приводит к моему следующему вопросу. Если приведенный выше пример вызывает проблемы с выравниванием памяти, почему компилятор не может просто превратить это в нечто подобное неявно:
struct
{
char A;
char C;
int B;
int D;
};
(Я в первую очередь спрашиваю о С++, но мне было бы интересно также услышать ответ C)