如何解决成员变量在内存中的连续布局?
C ++以与源中相同的顺序将变量存储在内存中是否是通用规则? 那么,如果我以32位顺序连续地定义许多具有不同保密性的4字节成员变量,而32位体系结构编译器会将它们放在内存中的连续单词上?
解决方法
C ++以与源中相同的顺序将变量存储在内存中是否是通用规则?
不。通常,C ++中的变量不存在这种规则。
但是,具有相同访问控制的成员变量 的存储顺序与声明的顺序相同,是的。未指定具有不同访问控制的成员之间的顺序。
成员变量在内存中的连续布局?
不能保证成员在连续的内存中。成员之间可能有未使用的填充字节,例如,为了满足成员的对齐要求,可能需要使用填充字节。
如果我们添加相同访问控制的其他限制,并且成员具有相同的对齐方式,那么实际上它们实际上很可能位于连续的内存中,尽管这种语言不能保证。
,如果定义结构/类或数组,则请求的内存将是连续的。 如果您来自 成员变量 的想法是class / struct属性,那么我可以说是,它将被包装在内存中(连续存储)。每次构造对象时,该对象的所有属性都将按照相对类/结构定义的顺序进行包装。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。