谈论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){..}或者它是否错误,因为我没有“空”它?
答案 0 :(得分:3)
2和3可能会导致内存泄漏。因此我建议使用1,或使用智能指针数组并使用新对象重置它们。
答案 1 :(得分:1)
1号非常不同。其他2个基本相同(但输入更多或更少)
如果数组是对象的所有者,则执行#1,即您需要释放内存。否则做#2或3
无论如何使用std :: vector和std :: shared_ptr
如果您感觉自己来自使用引用(例如c#或Java)进行魔术的语言,那么将null指向指针实际上会有所帮助。在c ++中不是这样(除非你像我之前所说的那样使用智能指针和容器)