【问题标题】:Deleting the same object twice [duplicate]两次删除同一个对象[重复]
【发布时间】:2012-06-26 17:51:35
【问题描述】:

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

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

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

【问题讨论】:

  • 你能澄清一下你在问什么
  • 这是未定义的行为。它可能会起作用,也可能会损坏。
  • 请记住,未定义行为的许多可能结果之一是“似乎可以正常工作”。然后问问自己你是否想依赖它。

标签: c++ object delete-operator


【解决方案1】:

What happens in a double delete?:

是的,这是非常错误的。

最大的问题是行为未定义。因此,在一种情况下,您可能会在一个编译器上侥幸逃脱,但通常它往往会导致崩溃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-13
    • 2020-10-17
    • 1970-01-01
    • 2010-09-19
    • 2020-10-16
    • 2011-02-16
    • 2020-04-02
    相关资源
    最近更新 更多