首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-03-13 
关于C++对象模型的内存占用问题声明两个类:classA{public:intv1doubled}classB{public:intv1floatv2f

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

热点排行