两次删除同一个对象

时间:2012-06-26 17:51:36

标签: c++ object delete-operator

  

可能重复:
  Undefined, unspecified and implementation-defined behavior

我知道在同一个对象上调用delete是灾难性的。但只要在第二次调用delete之前没有为某些其他对象重新分配内存,情况就是如此。但是,即使做下面的事情也是错的?如果我删除了cout,代码就不会转储核心。

int main()
{
    A *a1 = new A();
    delete a1;
    cout<<a1<<endl;
    delete a1;
}

1 个答案:

答案 0 :(得分:6)

请参阅What happens in a double delete?

是的,这是非常错误的。

最大的问题是行为未定义。所以你可以在一种情况下在一个编译器上使用它,但通常它会导致崩溃。