【发布时间】:2012-12-11 10:56:05
【问题描述】:
可能重复:
Is there any reason to check for a NULL pointer before deleting?
我知道The C++ language guarantees that delete p will do nothing if p is equal to NULL。但在不同的项目、文章、示例中,我经常看到它在删除之前检查 NULL。通常采用格式
if(pObj)
delete pObj;
为什么会这样?一些历史原因?我完全不知道如何正确地删除对象。
【问题讨论】:
-
我认为这往往只是无知。另外,关于如何正确删除对象...使用 RAII。
-
有些平台不执行标准删除。嵌入颗粒。在一个平台上 delete(NULL) 断言。这是为了优化和认为应用程序不同。但是我看到有些人使用了这种“hack”并且没有考虑对象的生命周期......导致应用程序更大更慢。
-
尽可能考虑使用智能指针。
标签: c++ delete-operator