在内存对齐上,这两个有什么区别?
为什么sizeof(AAA)==16,而sizeof(BBB)==24?
BBB不是相当于在前面有一个虚函数表指针吗?应该和AAA是一模一样的吧?
**********************************
class AAA
{
int a1;
int a2;
double d1;
};
class BBB
{
public:
int a1;
double d1;
virtual ~BBB(){};
};
[解决办法]
clss BBB少了一个int变量,int a2;
[解决办法]
class AAA
{
int a1;
int a2;
double d1;
};
class BBB
{
public:
int a1;
int a2;
double d1;
virtual ~BBB(){};
};
[code=c]
class AAA
{
//8字节对齐
int a1; // 开辟8字节,额外4个 0x01-0x08
int a2;// a2存入额外4个 0x05-0x08
double d1;//再开辟8个 0x09-0x16
};
class BBB
{
//8字节
public:
int a1; //开辟8字节,额外4个 0x01-0x08
double d1;//额外4个不够,再开辟8个 0x09-0x16
virtual ~BBB(){};//再额外开辟8个 0x16-0x24
};