删除数组崩溃C ++

时间:2014-12-08 12:06:09

标签: c++ delete-operator

我有以下代码崩溃。

aClass *ptr_obj = new aClass[5];
delete ptr_obj;

我知道,ptr_obj将使用delete []删除,但我的问题是,当我使用delete时它崩溃的原因。我以为它会将析构函数称为第一个对象而不是崩溃。 请帮忙。

1 个答案:

答案 0 :(得分:5)

分配了new[] 的数组必须delete[]一起删除,否则就是未定义的行为。

将您的代码更改为

delete[] ptr_obj;
   // ^^
  

“但我的问题是,当我使用删除时它崩溃的原因。”

因为如果不这样做,则会调用未定义的行为。

  

“我当时认为它会将析构函数称为第一个对象,而不是崩溃。”

没有。