今天才算把class 的内存对齐又多明白了一点.
1.class A{
char a;
int b;
}
2.class B{
char a;
char b;
int c;
}
3.class C{
char a;
int b;
char c;
}
sizeof(A) = 8
sizeof(B) = 8;
sizeof(C) = 12;
对于A,由于char a 的大小是1字节,int b 的大小是4字节,所以为了对齐,应该是 4+4 = 8
对于B,由int 型字节是4,所以内存最齐为4的倍数,所以 连续2个char只占4个字节的2个,于是B的大小是4+4 = 8
对于C,内存也是对齐4,a占1,但是为了对齐,所以是4,接着int 是4,后面c同样占4 所以大小为 4+4+4 = 12;
对于一个class,其大小由非静态成员变量和虚函数决定