class father{
public:
int num;
public:
father();
virtual ~father(){};
};
class son : father{
public:
int age;
int high;
int dududu;
int biubiubiu;
int wuwuwu;
int hahaha;
public:
father();
virtual ~father(){};
};
static father mfather[10]; //定义一个对象不能复现问题
int main()
{
son *mson = NULL;
mson = (son*)&father[0];
mfather[0].num = 1;
#if 0 //不进行赋值操作不能复现问题
mson->age = 10;
mson->high = 160;
mson->dududu = 123;
mson->biubiubiu = 134;
mson->hahaha = 456;
#endif
return 0;
}
怀疑点:
1. 全局静态基类对象构造时已分配连续的内存空间,在强转成派生类对象进行赋值操作时,产生越界,无法解释在析构时才产生异常?
2. 全局静态基类对象构造时已分配连续的内存空间,在析构的时候,由于强制转换成派生类对象,析构大小变为派生类的大小,导致析构到未初始话的内存空间,导致异常。
3.求求大佬们,给一下具体原因。