删除指针,将其设为 NULL 还是什么都不做?

Delete a pointer,make it NULL or nothing?

谈论 C++。 例如,假设我有一个指向 objects.In 位置 Array[6] 的指针数组,我想用另一个相同类型的对象替换指向的对象。 哪种方法最明智?

1.

delete Array[6];
Array[6]=new Object(...);

2.

Array[6]=NULL;
Array[6]=new Object(...);

3.

Array[6]=new Object(...);

或者其他我missing.Waiting 寻求建议,谢谢!!

编辑: 问题:
是否要删除 Array[6] 指向的对象?如果是这样,请删除 Array[6];。如果不是,请不要删除 Array[6];。我不确定那里有什么可混淆的。

回答: 是的,这就是你提到的我想要的。我想要 Array[6] 指向 "disappear" 的对象并在那里创建一个新对象。 我的另一个问题:我想在函数中删除数组的一些对象,但在另一个函数中我想访问它们所以我必须检查。 哪个是我的支票? 可能是: if (Array[i]==NULL){..} 还是因为我没有 "NULLed" 它是错误的?

2和3很可能会导致内存泄漏。因此,我建议 1,或使用智能指针数组并用新对象重置它们。

1 号非常不同。其他2个基本相同(但或多或少打字)

如果数组是对象的所有者,则执行#1,即您需要释放内存。否则执行#2 或 3

并且无论如何使用 std::vector 和 std::shared_ptr

如果感觉您来自对引用施展魔法的语言(如 c# 或 Java),其中将 null 赋值给指针实际上做了一些事情。在 C++ 中不是这样(除非你像我之前说的那样使用智能指针和容器)