在 C++ 中,就内存布局而言,我认为 C++ 标准与数据成员在类中的排列方式无关?我认为这取决于所讨论的编译器是否正确?
我对学习对象和其他 C++ 实体(结构等)如何在物理内存中表示非常感兴趣(我知道列表是节点到节点,数组是连续内存——但语言的所有其他方面) .
编辑:学习 x86 汇编程序是否有助于此并更好地理解 C++?
最佳答案
C++ 标准确实指定了一些内容,但远非所有内容。
主要规则如下:
- 数组中的对象是连续放置的,它们之间没有填充。
- 类成员对象不由访问说明符分隔(
public:
/private:
/protected:
)按照声明的顺序排列在内存中,但成员对象之间可能有未指定数量的填充。 - 对于某些类型(标准布局结构,在标准术语中),第一个基类,或者如果不存在,则第一个成员被布置在与类本身相同的地址。
标准还规定了一些细节,但总的来说,剩下的细节实际上取决于编译器。
关于c++ - 对象/结构等的 C++ 内存布局是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12884933/