在 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++ 中删除空指针是不是被认为是未定义的行为? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

是否打印空指针未定义行为?

为啥在已删除指针上调用非虚拟成员函数是未定义的行为?

C ++中的内存泄漏“未定义行为”类问题吗?

访问空指针地址的符合 C 标准的方法?

C++ 中的这种未定义行为是不是从悬空指针调用函数

指向匿名联合成员的指针是不是相等?