c++ 类多态问题 求大神!!!!!!!!!!

class A
{
public:
virtual void cgr(){};
}
class B:public A
{
public:
int x;
void cgr (){cout<<1<<endl;}
}
void main()
{
A *p=new B;
}
A类占1以字节 B占4个字节
那么A *p=new B;在堆区申请了几个字节?

B的大小还有加上虚函数表等大小。

首先,在32位平台,类A占的是4字节,其中有一个虚表指针,指向类A的虚函数表;
类B占8字节(int成员和虚表指针)。A *p=new B;中p指针的内存是在栈上分配的,
只有new B操作结果是在堆上申请的,大小为类B的大小,即8个字节。