我有以下代码崩溃。
aClass *ptr_obj = new aClass[5];
delete ptr_obj;
我知道,ptr_obj将使用delete []删除,但我的问题是,当我使用delete时它崩溃的原因。我以为它会将析构函数称为第一个对象而不是崩溃。 请帮忙。
答案 0 :(得分:5)
分配了new[]
的数组必须与delete[]
一起删除,否则就是未定义的行为。
将您的代码更改为
delete[] ptr_obj;
// ^^
“但我的问题是,当我使用删除时它崩溃的原因。”
因为如果不这样做,则会调用未定义的行为。
“我当时认为它会将析构函数称为第一个对象,而不是崩溃。”
没有。