为什么字符大小增加为实例变量

时间:2013-01-29 09:35:00

标签: c++

  

可能重复:
  Why isn’t sizeof for a struct equal to the sum of sizeof of each member?
  How is the size of a C++ class determined?

当我用单个char变量检查类的大小时,它的大小是1 Byte。但是如果我们添加一个整数,那么它突然变为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;
}

输出是: 字符大小:1 内部大小:4 大小:8

1 个答案:

答案 0 :(得分:1)

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

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

A arrayOfA[10];

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