C++ 为什么结构存储的字节数比其定义的多?

C++ 为什么结构存储的字节数比其定义的多?,c++,struct,sizeof,C++,Struct,Sizeof,在本代码中: #include <iostream> using namespace std; int main() { struct people {char name[50]; int tt; int gg;}; struct people p1; cout << sizeof(p1); return 0; } 输出为60。为什么?我的意思是,结构只需要有50+4+4=58个字节。如果我们将名称[50]更改为名

在本代码中:

#include <iostream>

using namespace std;

int main() {
    struct people {char name[50]; int tt; int gg;};
    
    struct people p1;
    cout << sizeof(p1);
    
    return 0;
}
输出为60。为什么?我的意思是,结构只需要有50+4+4=58个字节。如果我们将名称[50]更改为名称[20],我们将得到预期的输出:28


结构成员使用的内存是连续的这一点并不矛盾?

为了提高效率和执行速度,编译器将在4字节边界上对齐int变量。因此,结构的布局为:

name     - 50 bytes
padding  - 2 bytes
tt       - 4 bytes
gg       - 4 bytes
------------------
total     60 bytes
------------------

填充和对齐此常见问题解答的第二个问题:也回答了我的问题,谢谢