<分区>
Possible Duplicate:
Why isn’t sizeof for a struct equal to the sum of sizeof of each member?
我想之前一定有人在 SO 上问过类似(重复)的问题。但是我找不到它们。基本上我不知道要搜索什么。所以在这里问一下。
为什么结构的大小不等于其各个成员类型的大小之和? 我正在使用 Visual C++ 编译器。
例如假设是32位机器。 {=> sizeof(int) == 4; sizeof(char) == 1; sizeof(短) == 2;
struct {
int k;
char c;
} s;
期望的大小是 4+1 = 5;但是 sizeof(s) 给出 8。这里 char
占用 4 个字节而不是 1 个字节。我不知 Prop 体原因,但我猜编译器这样做是为了提高效率。
struct{
long long k;
int i;
} s;
预期大小为 4+4 = 8(在 32 位机器上)和 8+4=12(在 64 位机器上)。但奇怪的是 sizeof(s) 给出了 16。这里 int 和 long long 都占用了 8 个字节。
- 这个东西叫什么?
- 到底发生了什么?
- 编译器为什么要这样做?
- 有没有办法告诉编译器停止这样做?