假设:
class A
{
};
class B : A // inherit from an empty class
{
int * x;
};
class C
{
int * x;
};
根据标准是sizeof(B) == sizeof(C)
吗?
sizeof(A) == 1
时,1是"虚拟"值因为sizeof在这种情况下不能返回0
根据标准,是从非空类继承期间结转的虚拟值。
实际上,问题的原因是我使用void *
作为指向几个类的指针,如果它们都共享一个基类会更清楚,但这是性能关键代码和添加一个字节,实际上会添加8,因为与子类中的64位指针对齐。这将显着增加总内存占用量,我可能会有大量内存占用。