此结构的大小

Size of this struct

本文关键字:结构      更新时间:2023-10-16

可能的重复项:
为什么结构的 sizeof 不等于每个成员的大小之和?

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

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 个字节从何而来?

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