可能重复:
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
答案 0 :(得分:1)
由于填充 - 在A::b
之后将添加3个虚拟字节。
这样做是为了在数组中正确对齐A
- A
的第一个成员是int
,它必须具有特定的对齐方式(4或8个字节)大概)。所以,如果你有
A arrayOfA[10];
对象本身必须与4
或8
字节对齐。