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

xia*_*aoy 15 c++ arrays

以下代码来自Microsoft文档

int (**p) () = new (int (*[7]) ());
delete *p;
Run Code Online (Sandbox Code Playgroud)

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

delete *p一样的delete [] p吗?

Aco*_*orn 16

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

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

error C2541: 'delete': cannot delete objects that are not pointers
Run Code Online (Sandbox Code Playgroud)

他们应该使用delete []代替。