class fi
{
public :
fi(){};
virtual void ri(){};
};
class se : public fi
{
public :
se(){};
char abc;
};
int main(void)
{
fi* f = new fi;
static_cast<se*>(f)->abc = 'a';
cout << static_cast<se*>(f)->abc << endl;
return 0;
}
谁能帮我解释一下!程序中的abc内存是怎么分配的?
------解决方案--------------------------------------------------------
c++对象new操作一般在heap(堆)中为对象分配空间,abc应该在heap中。
你这样强制转换对象,abc的地址可能是非法指针,也可能会overwrite其他空间。
你不妨打印出地址来看看。
------解决方案--------------------------------------------------------
你构造的是fi类,abc不是fi类的成员,没有未其分配内存,访问abc是越界访问。