关于sizeof()类的不同类型

use*_*988 1 c++ size sizeof

可能重复:
为什么structof sizeof不等于每个成员的sizeof之和?

为什么输出8
不是sizeof(int)+sizeof(char) = 5吗?

class CBase 
{ 
    int a; 
    char p; 
}; 

int main() {

    cout<<"sizeof(CBase)="<<sizeof(CBase)<<endl;
    getchar();
} ///:~
Run Code Online (Sandbox Code Playgroud)

Huy*_*ens 5

内存通常由编译器对齐以获得更好的性能.因此,类或结构在内存中占用的空间可能多于其各部分的总和.

  • 特别是在这种情况下:如果你创建一个`CBase`数组,那么下一个元素从前一个结束后的下一个字节开始.因此,为了确保`a`在数组的每个元素中都是4对齐的,实现已将`CBase`填充为4的倍数.结构的大小始终是其对齐要求的倍数. (3认同)