如果我有class Base { };
和class Derived : public Base { };
,那么当我执行以下操作时:
Base* p = new Derived();
为p
分配了多少内存?
答案 0 :(得分:8)
尽可能多地存储Derived
对象。
您可以使用sizeof(Derived)
获取字节数。
答案 1 :(得分:2)
sizeof(Derived)
指向的地址 p
。
答案 2 :(得分:0)
在这种情况下,p
将指向包含Derived
对象的内存块的开头。因此,分配的大小为sizeof(Derived)
,指针类型为Base
。
答案 3 :(得分:0)
我记得总大小是:sizeof(派生)。如果将方法标记为virtual
,则sizeof()也会将4字节作为指向vtable的指针。
所以,如果你有
class Base {
int a;
}
sizeof(Derived)
将为4
class Base {
int a;
virtual foo();
}
sizeof(Derived)
将为8