成员变量在内存中的连续布局?

Consecutive layout of member variables in memory?

C++ 将变量存储在内存中的顺序与在源代码中的顺序相同,这是一个通用规则吗? 那么如果我在32位顺序中连续定义了很多具有不同隐私的4字节成员变量并且32位架构编译器将它们放入内存中的连续字中?

如果你定义struct/class或者数组,你申请的内存是连续的。 如果你从成员变量得到的想法是class/struct属性,那么我可以说是的,它会被包装存储在记忆(如此连续)。每次构造一个对象时,该对象的所有属性都将按照相对 class/struct 定义的顺序进行定义。

Is it a universal rule that C++ stores variables in memory in the same order as are in the source?

没有。对于一般的变量,C++ 中不存在这样的规则。

然而,成员变量具有相同的访问控制存储的顺序与声明的顺序相同,是的。不同访问控制的成员之间的顺序未指定。

Consecutive layout of member variables in memory?

不保证成员在连续内存中。成员之间可能有未使用的填充字节,这可能需要例如满足成员的对齐要求。

如果我们添加相同访问控制的额外限制并且成员具有相同的对齐方式,那么实际上它们很可能会在连续的内存中,尽管语言不能保证这一点。