删除* p是删除[] p的替代方法吗?

时间:2019-04-04 20:09:05

标签: c++ arrays

以下代码来自the Microsoft Documentation

int (**p) () = new (int (*[7]) ());
delete *p;

我认为这里应该使用delete [] p

delete *pdelete [] p相同吗?

1 个答案:

答案 0 :(得分:16)

该代码是无效的C ++,因为只能删除指向对象的指针。 *p的类型为int (*)(),它是一个函数指针,而不是指向对象的指针。

即使在许可模式下,即使MSVC本身也不会编译它:

error C2541: 'delete': cannot delete objects that are not pointers

他们应该改用delete []