读书人

关于C++对象模型的内存占用有关问题

发布时间: 2012-03-13 11:21:11 作者: rapoo

关于C++对象模型的内存占用问题
声明两个类:

class A
{
public:
int v1;
double d;
};

class B
{
public:
int v1;
float v2;
float v3;
};

结果:
sizeof(int) 是 4,
sizeof(double) 是 8,
sizeof(float) 是 4;

但是:
sizeof(A) 是 16,
sizeof(B) 是 12。

使用的编译器是 Visual Studio 2005, CPU 是32位的P4。

谁能解释一下为什么类 A 的大小是16字节,而类 B 的大小是12字节。


[解决办法]
对齐单位在没有指定的情况下,
取成员的最大对齐长度
(也就是最大的成员的长度为对齐标准)
注意,该对齐单位不大于 8 (如果大于8则取8)

读书人网 >C++

热点推荐