在阵列上删除崩溃C++

Delete on array crashes C++

本文关键字:崩溃 C++ 删除 阵列      更新时间:2023-10-16

我有以下代码崩溃。

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

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

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

将代码更改为

delete[] ptr_obj;
   // ^^

"但我的问题是为什么当我使用删除时它会崩溃。"

因为如果你不这样做,你就是在调用未定义的行为。

"我以为它会为第一个对象调用析构函数而不是崩溃。

其实不然。