为什么C++中有delete []?

9 c++ delete-operator

为什么会有delete[]?从我的理解,它对阵列的行为不同.但是,它为什么真的存在?C中只有免费,没有free_array.同样在语法中,delete var和之间的唯一区别delete []var[]没有参数(我没有告诉数组的长度).

那么为什么delete[]真的存在呢?我知道有人会说,你可以重载deletedelete[](至少我认为这是可能的),但可以说我们没有超载.它为什么存在?

CB *_*ley 19

通常,对于非POD类,delete[]表达式必须在可编译的类实例上调用析构函数,这些类实例在编译时无法确定.编译器通常必须实现一些运行时"魔法",可以用来确定要销毁的正确数量的对象.

delete表达式不必担心这一点,它只是破坏一个对象,该对象所提供的指针指向.因此,它可以实现更高效的实施.

通过拆分deletedelete[],delete可以在不正确执行所需的开销可以实现delete[]为好.