这是Rob Walker 在这里回答的问题.
假设我声明一个类/结构,如下所示:
struct
{
char A;
int B;
char C;
int D;
};
Run Code Online (Sandbox Code Playgroud)
是否可以安全地假设这些成员将在内存中以完全相同的顺序声明,或者这是否依赖于编译器?我问,因为我一直认为编译器可以随心所欲地做任何事情.
这导致了我的下一个问题.如果上面的例子导致内存对齐问题,为什么编译器不能只是隐式地将它变成这样的东西:
struct
{
char A;
char C;
int B;
int D;
};
Run Code Online (Sandbox Code Playgroud)
(我主要是询问C++,但我也有兴趣听到C答案)