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