我知道delete
空指针是无操作的:
在任一替代方案中,如果 delete 的操作数的值是空指针,则该操作无效。
(C++ 标准5.3.5 [expr.delete] p2
)
而且删除void*
指针是未定义的行为,因为无法调用析构函数,因为没有类型的对象void
:
在第一种
delete object
选择(如果不是,则行为未定义。
(C++ 标准5.3.5 [expr.delete] p2
)
现在,通常我认为首先列出的内容会覆盖稍后列出的内容,但是void*
下面的空指针呢?
void* p = 0;
delete p; // UB or well-defined?