类的内存布局是连续的吗?

时间:2011-01-30 10:41:37

标签: c++ class static memory-management

当我们声明一个类的对象是它的内存布局连续(一个接一个)?如果它的连续性比 padding 在其中发生(如结构填充) ?请帮我解决类的内存布局

的概念

提前致谢。

1 个答案:

答案 0 :(得分:7)

  

当我们声明一个类的对象时   它的内存分配是连续的(一   在另一个之后)?

本标准未给予任何此类保证。对象内存布局是实现定义的。

通常,数据成员的内存地址按照它们在类中定义的顺序增加。但是,在遇到访问说明符(privateprotectedpublic)的任何地方,此订单可能会中断。这已在Inside the C++ Object Model Lippman 中详细讨论过。

摘录自C/C++ Users Journal

  

不允许编译器执行此操作   但重新排列本身。该   标准要求所有数据都是   在相同 public:,protected:或   私人:必须在那里布置   由编译器订购。 如果你   通过访问来散布您的数据   但是,编译器是说明符   允许重新排列   access-specifier-delimited块   数据改善布局即是   为什么有些人喜欢进入   每个数据前面的说明符   构件

有趣,不是吗?