删除NULL但没有编译错误

cpl*_*bie 7 c++ null

我很困惑为什么下面的C++代码可以编译.为什么调用删除0的方法不会产生任何错误?!

int *arr = NULL;     // or if I use 0, it's the same thing      
delete arr;
Run Code Online (Sandbox Code Playgroud)

我确实尝试过运行它,它根本没有给我任何错误......

Jac*_*cob 19

如果p等于NULL,则C++语言保证delete p不会执行任何操作.

欲了解更多信息,请参阅第16.8,9 这里:

  • 删除NULL指针在C++中是合法的,因此编译器可以正常使用它. (5认同)
  • 就编译器而言,所有这些都是合法的.运行时可能会有不同的意见,当然...... (3认同)
  • 哇,乔希,也许我只是读错了,但你听起来很防守或什么的.删除null很好,它什么都不做. (3认同)