class object
{
public:
void check()
{
std::cout<<"I am doing ok..."<<std::endl;
}
};
int main()
{
object *p = new object;
p->check();
delete p;
p->check();
delete p;
p->check();
}
EDIT:
大师们,我对许多“它可能崩溃或可能不会”的说法感到困惑..为什么没有一个标准来说明,我们如何处理使用“删除运算符”删除的内存块..?有任何输入吗?
因为编译器按照自己的方式行事后,它实际上看起来像这样:
object::check( object* this )
{
// do stuff without using this
}
int main()
{
object *p = new object;
object::check( p );
delete p;
object::check( p );
delete p;
object::check( p );
}
由于您没有触及“这个”,因此您实际上并没有访问任何不良记忆。
不过,删除 p 两次应该会导致崩溃:
http://www.parashift.com/c++-faq-lite/freestore-mgmt.html#faq-16.2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)