这个结构的大小

时间:2012-09-27 15:48:25

标签: c++ sizeof

  

可能重复:
  Why isn't sizeof for a struct equal to the sum of sizeof of each member?

我随机创建了一个结构,它的大小让我感到惊讶,因为结果不等于我的计算结果:

int main( int argc, char ** argv ) {
    struct S
    {
        int i;
        int b;
        int c;
        long int e;
    };
    cout << sizeof (struct S) << endl; //sizeof is still an operator
    return 0;
}

通常,3 * int + 1 * long int = 3 * 4 + 8 = 20.

然而,结果是24。

这4个字节来自哪里?

1 个答案:

答案 0 :(得分:5)

您的struct 填充四个字节,大概是将long int放在8字节边界上以加快对它的访问。这与平台有关:并非所有编译器都会添加这些字节。