【发布时间】:2011-11-03 02:16:45
【问题描述】:
假设您在 C++ 中有一个对象数组,并且您从数组中删除了其中一个对象。什么时候调用该对象的析构函数?由于 C++ 没有自动垃圾收集,因此如果在从数组中删除后立即调用析构函数,这似乎很奇怪。但是在数组超出范围之前,对象是否保持分配状态?这似乎会导致内存泄漏。
编辑:
如何将数组的元素之一设置为不同的对象,而不是“删除”。
另外,当一个元素从std::vector 中移除时会发生什么?
【问题讨论】:
-
您不能从数组中“删除”对象。你是在说
std::vector吗? -
请说明您认为从数组中删除项目的方式。
-
如何移除对象?这些对象是动态分配在堆上还是栈上的数组?
-
@domonic 假设它是堆栈上的一个数组。我知道如果它们是动态分配的,我将不得不删除它们以释放内存。
-
好的,在这种情况下,您可能对copy and swap idiom 感兴趣。
标签: c++ memory-leaks destructor