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
------------------
填充和对齐此常见问题解答的第二个问题:也回答了我的问题,谢谢