在 C++ 中删除空指针是不是被认为是未定义的行为? [复制]

Posted

技术标签:

【中文标题】在 C++ 中删除空指针是不是被认为是未定义的行为? [复制]【英文标题】:Is deleting a null pointer in C++ considered undefined behaviour? [duplicate]在 C++ 中删除空指针是否被认为是未定义的行为? [复制] 【发布时间】:2014-11-02 06:15:30 【问题描述】:

考虑以下代码:

int main() 
  int *i = nullptr;
  delete i;

问题:

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

【问题讨论】:

这个问题有一个zillion duplicates... @40two 不清楚需要搜索 c++ delete null pointer 才能找到:P 你确实有不同的拼写re“空指针”和“空指针”。我让他们都说“空指针”,这是技术上正确的拼写。 【参考方案1】:

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

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

来自 N3242[expr.delete]

delete的操作数的值可能是空指针 价值

【讨论】:

引用于this answer。

以上是关于在 C++ 中删除空指针是不是被认为是未定义的行为? [复制]的主要内容,如果未能解决你的问题,请参考以下文章