类属性的顺序是否会影响对象大小?

时间:2015-07-30 06:07:59

标签: c++

在我的印象中,我似乎读过类似“类中的属性应该被声明为适合某些东西(如8字节)”的东西,这个想法是这样的:

class A{
    int a;
    int b;
    float c;
};

而不是

class A{
    int a;
    float c;
    int b;
};

因为2 int一起可以适合8个字节。

但是我忘记了我的想法,我甚至忘记了关于它的主要想法,这是否合理?

1 个答案:

答案 0 :(得分:0)

您正在寻找的概念是结构填充(在结构的元素之间放置空格)或结构填充(将空间挤压在一起)。我相信你可以谷歌吧。

但基本答案是肯定的,这些结构的大小可能不同。如果浮点数需要与8个字节对齐以获得性能,并且此平台上的整数各为4个字节,那么您最终会在第二个布局中浪费4个字节。 a和c之间留有4个字节的间隙,使c与8个字节对齐。但所有这些都取决于你的编译器和平台来决定。