<分区>
我写了一个非常简单的代码。动态创建一个对象,然后删除该对象并将其分配给零。之后,我访问了该对象的成员函数,但我的程序并没有崩溃,而是返回了值。
class MyClass
{
public:
MyClass() {}
int funct() { return 0; }
};
int main()
{
MyClass *mc = new MyClass;
delete mc;
mc = 0;
// The program should crash here as I've set mc to zero after deleting
// it. But it returns the value.
int retVal = mc->funct();
return 0;
}
根据我对new、delete 和赋值给零的理解,这段代码应该崩溃,或者给出异常。