为什么结构体的sizeof不等于其成员sizeof之和?
大家好!我是C++新手,最近遇到了一个意想不到的行为。我有一个简单的结构体:
```cpp
struct MyStruct {
char a; // 1字节
int b; // 4字节
short c; // 2字节
};
```
按理说,sizeof(MyStruct)应该是1 + 4 + 2 = 7字节。但当我通过`std::cout`输出大小时,编译器显示12字节!为什么会这样?我没有使用任何虚函数或继承。我在不同编译器(GCC、MSVC)上测试过——结果都一样。而且如果改变字段的顺序,结果也会变化。例如,如果把`int`放在第一位,大小就变成8字节。这是什么魔法?是编译器bug还是我遗漏了什么?请解释一下结构体的sizeof是如何工作的,以及如何预测实际大小。提前感谢!
<<>>
为什么结构体的sizeof大于字段大小之和?
这不是bug,而是处理器和编译器的一种特性,称为