相关疑难解决方法(0)

删除NULL指针是否安全?

删除NULL指针是否安全?

它是一种很好的编码风格吗?

c++ pointers memory-management null-pointer delete-operator

281
推荐指数
5
解决办法
15万
查看次数

为什么删除不完整的类型定义为"未定义的行为"?

为什么删除不完整的类型定义为"未定义的行为"

来自C++规范; §5.3.5/ 5;

如果被删除的对象在删除时具有不完整的类类型,并且完整的类具有非平凡的析构函数或释放函数,则行为是未定义的.

给出代码示例(我理解为什么它是一个错误);

class ABC;

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

当gcc,clang和msvc都警告它是一个不完整的类型时,为什么它被定义为未定义的行为?为什么不在这一点上出现错误,即为什么它不是可诊断的错误

c++ language-lawyer

3
推荐指数
1
解决办法
409
查看次数