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

时间:2020-10-06 14:56:58

标签: c++ memory-management

C ++以与源中相同的顺序将变量存储在内存中是否是通用规则? 那么,如果我以32位顺序连续地定义许多具有不同保密性的4字节成员变量,而32位体系结构编译器会将它们放在内存中的连续单词上?

2 个答案:

答案 0 :(得分:2)

C ++以与源中相同的顺序将变量存储在内存中是否是通用规则?

不。通常,C ++中的变量不存在这种规则。

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

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

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

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

答案 1 :(得分:0)

如果定义结构/类或数组,则请求的内存将是连续的。 如果您来自 成员变量 的想法是class / struct属性,那么我可以说是,它将被包装在内存中(连续存储)。每次构造对象时,该对象的所有属性都将按照相对类/结构定义的顺序进行包装。

相关问题