是内存布局一类连续?(Is Memory Layout for a class successive

2019-10-30 04:28发布

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

提前致谢。

Answer 1:

当我们声明一个类的对象是它的内存分配连续的(一个接一个)?

该标准并没有给任何这样的保证。 对象的内存布局是实现定义的。

通常情况下,内存地址的数据成员增加他们在类中定义的顺序。 但这个顺序可以在其中访问修饰符(任何地方被破坏privateprotectedpublic遇到)。 这已经很详细的讨论里面的C ++对象模型由李普曼

从摘录C / C ++用户杂志 ,

编译器是不允许这样做的重排本身,虽然。 该标准规定,这是在保护:,或私人相同的公共:,所有的数据:必须由编译器的顺序进行布局。 如果您有访问说明点缀你的数据,但是,编译器被允许重新排列数据的访问说明符分隔块以改善布局这就是为什么有些人喜欢把一个访问说明符在每个数据成员的前面

很有趣,不是吗?



文章来源: Is Memory Layout for a class successive?