C++中的delete运算符是否需要正确的类型?

Vic*_*tor 7 c++ memory-management casting

void * intptr = new int;
delete (int *) intptr;
Run Code Online (Sandbox Code Playgroud)

是否(int *)需要进行类型转换?

GMa*_*ckG 11

是.

该类型必须与new'd匹配.它不必匹配的唯一时间是通过基指针删除派生类型,其中基类型具有虚拟析构函数.


Ida*_*rye 5

是的。由于 C++ 不是一种一切皆对象的语言,因此删除命令必须知道要删除的内容的类型,以便知道如何删除它。

  • 尽管这是正确的,但该评论没有任何意义。无论如何,我不明白 int 或 `int*` 为何不是 C++ 意义上的对象。 (2认同)