是否在C++中删除空指针被认为是未定义的行为?

101*_*010 -4 c++ null-pointer undefined-behavior c++11 c++14

考虑以下代码:

int main() {
  int *i = nullptr;
  delete i;
}
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 删除空指针是否被视为未定义的行为?
  2. 在C++ 11或C++ 14中有什么变化吗?

Ale*_*exD 5

在C++中删除NULL指针是否被视为未定义的行为?

不,这是完全合法的操作.

来自N3242,[expr.delete]

delete的操作数的值可以是空指针值