相关疑难解决方法(0)

类/结构成员总是按照它们被声明的顺序在内存中创建吗?

这是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答案)

相关话题

c++ memory memory-alignment

41
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

memory ×1

memory-alignment ×1