关于sizeof()类的不同类型

时间:2012-05-14 08:58:29

标签: c++ size sizeof

  

可能重复:
  Why isn't sizeof for a struct equal to the sum of sizeof of each member?

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

class CBase 
{ 
    int a; 
    char p; 
}; 

int main() {

    cout<<"sizeof(CBase)="<<sizeof(CBase)<<endl;
    getchar();
} ///:~

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

看起来好像编译器/运行时已对齐到8字节边界。您可能会发现可以通过编译器或运行时开关更改此设置。例如,在AIX上,C ++内存分配与16字节对齐,这可能导致它们使用更多内存。

要不进行此对齐,可以在运行时解决此问题(其缺点是应用程序无法使用VMX)只需在运行应用程序之前为应用程序设置此环境变量:

export LIBCPP_NOVMX=1