两次删除同一个对象

rah*_*hul 1 c++ object delete-operator

可能重复:
未定义,未指定和实现定义的行为

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

int main()
{
    A *a1 = new A();
    delete a1;
    cout<<a1<<endl;
    delete a1;
}
Run Code Online (Sandbox Code Playgroud)

Nat*_*one 6

请参阅双重删除会发生什么?:

是的,这是非常错误的.

最大的问题是行为未定义.所以你可以在一个编译器的一种情况下逃脱它,但一般来说它往往会导致崩溃.