关于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)