gpt4 book ai didi

c - 为什么结构的大小不等于其各个成员类型的大小之和?

转载 作者:太空狗 更新时间:2023-10-29 15:56:20 27 4
gpt4 key购买 nike

<分区>

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 个字节。

  1. 这个东西叫什么?
  2. 到底发生了什么?
  3. 编译器为什么要这样做?
  4. 有没有办法告诉编译器停止这样做?

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com