【发布时间】:2018-05-01 11:31:41
【问题描述】:
C++03 标准说法:
5.3.5 删除
[...] 在任一替代方案中,如果 delete 的操作数的值是空指针,则该操作无效。[...]
char *p = nullptr;
delete p; //no effect
也就是说,在c++中删除空指针是有效的。
关于在 nullptr 指针上调用 delete 的 C++17 标准有何规定?
【问题讨论】:
-
NULL 是一个整数。你应该用
nullptr初始化指针。 -
@PiotrKocia 我做了更正。谢谢。
-
@PiotrKocia NULL 或 0 对指针初始化有效。 nullptr 在 C++03 中不存在。
-
@manni66 是有效的,但是将 NULL 传递给模板 == 错误。使用 NULL 是一种不好的做法。
nullptr应改为使用。问题标记为c++1z,而不是c++03。
标签: c++ language-lawyer c++17 delete-operator nullptr