我知道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?