可能重复:
为什么在 delete ( delete [] ) 中使用 [] 来释放动态分配的数组?
为什么 C++ 仍然有一个 delete[] AND 一个删除运算符?
我想知道它们有什么区别,我知道有些人可能会说的明显答案,一个是删除数组,另一个是删除单个对象,但我想知道为什么这两个操作应该有两种不同的删除方法? 我的意思是删除基本上是使用 Cfree
方法实现的,它不关心指针实际上是指向数组还是单个对象。我能想到的唯一原因是两个能够知道它是否是一个数组并为每个单元格调用析构函数,而不仅仅是第一个对象,但这也是不可能的,因为编译器无法猜测数组的长度只是看着它指针。顺便说一句,虽然据说调用未定义的行为来调用delete
分配的内存new[]
我可以'