Base中的内存分配* p = new Derived()

时间:2012-02-29 13:41:34

标签: c++

如果我有class Base { };class Derived : public Base { };,那么当我执行以下操作时:

Base* p = new Derived();

p分配了多少内存?

4 个答案:

答案 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