删除一个指针,使其为NULL或什么都没有?

时间:2016-02-03 22:22:48

标签: c++ null delete-operator

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

1

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

2

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

3

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

或者其他我想念的东西。等待建议,谢谢!!

编辑: 问题:
你想删除Array [6]指向的对象吗?如果是,请删除数组[6];如果没有,请不要删除Array [6];。我不确定那里有什么困惑。

答案: 是的,这就是你提到的我想要的东西。我希望Array [6]指向的对象“消失”并在那里创建一个新对象。 我的另一个问题:我想在函数中删除数组中的某些对象,但在另一个中我想访问它们,所以我必须检查。 哪个是我的支票? 也许:   if(Array [i] == NULL){..}或者它是否错误,因为我没有“空”它?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

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

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

如果您感觉自己来自使用引用(例如c#或Java)进行魔术的语言,那么将null指向指针实际上会有所帮助。在c ++中不是这样(除非你像我之前所说的那样使用智能指针和容器)

相关问题