删除数组崩溃C++

Sri*_*nth 1 c++ delete-operator

我有下面的代码崩溃.

aClass *ptr_obj = new aClass[5];
delete ptr_obj;
Run Code Online (Sandbox Code Playgroud)

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

πάν*_*ῥεῖ 5

new[] 必须删除分配的数组delete[],否则它是未定义的行为.

将您的代码更改为

delete[] ptr_obj;
   // ^^
Run Code Online (Sandbox Code Playgroud)

"但我的问题是,当我使用删除时它崩溃的原因."

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

"我以为它会将析构函数称为第一个对象,而不是崩溃."

它没有.