0

可能重复:
为什么结构的 sizeof 不等于每个成员的 sizeof 之和?
C++ 类的大小是如何确定的?

当我用单个 char 变量检查类的大小时,它的大小是 1 字节。但是如果我们添加一个整数,它会突然变成 8。你能解释一下为什么吗?

class Char
{
  char b;
};
class Int
{
  int a;
};
class A
{
  int a;
  char b;
};

int main()
{
  Char Cobj;
  cout<<"Char size: "<<sizeof(Cobj)<<endl;
  Int Iobj;
  cout<<"Int size: "<<sizeof(Iobj)<<endl;
  A aobj;
  cout<<"A size: "<<sizeof(aobj)<<endl;

  return 0;
}

输出为: Char 大小:1 Int 大小:4 A 大小:8

4

1 回答 1

1

由于填充 - 后将添加 3 个虚拟字节A::b

A这样做是为了在数组中正确对齐- 的第一个成员A是 an int,它必须具有特定的对齐方式(可能是 4 或 8 个字节)。所以如果你有

A arrayOfA[10];

对象本身必须对齐48字节。

于 2013-01-29T09:35:57.130 回答