C++ 为什么字符大小随着实例变量的增加而增加

C++ 为什么字符大小随着实例变量的增加而增加,c++,C++,可能重复: 当我用单字符变量检查类的大小时,它的大小是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; co

可能重复:

当我用单字符变量检查类的大小时,它的大小是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;
}
类字符
{
字符b;
};
类Int
{
INTA;
};
甲级
{
INTA;
字符b;
};
int main()
{
焦炭;

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

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

A arrayOfA[10];

对象本身必须与
4
8
字节对齐。

Hmm这些家伙在更深层次上进行了讨论。Thanx用于链接