向量的C ++分配,其中包含新的指针

时间:2018-08-02 16:00:51

标签: c++ vector stl

使用向量保持指向新分配对象的指针时,例如

vector<int*> intP;
for(int i = 0; i < N; ++i){
   intP.push_back(new int(i));
}

我了解到,我们通常必须在int*中使用for_each来释放每个<algorithm>所指向的所有内容。我还知道,当向量的大小增加到其容量时,它将通过分配两倍大小的新空间,将旧空间中的所有内容复制到新空间并破坏旧空间中的所有内容来重新分配更多空间。但这不会引起内存泄漏,因为没有人要删除旧的int*指向的内容吗?

1 个答案:

答案 0 :(得分:3)

首先让我们更好地定义“泄漏”是什么。当您动态分配了无法再访问的内存时,就会发生内存泄漏。

这意味着您无法取消分配它,甚至无法知道它在哪里!这可能是由于指针在调用onBeforeRebind: function(oEvent) { var mBindingParams = oEvent.getParameter("bindingParams"); mBindingParams.parameters["expand"] = " T006Details"; } 之前超出范围或其他原因导致的。

对于您来说,delete确实会破坏指向动态内存的指针数组,但是在这样做之前,它会复制所有指针。因此,由于您仍然可以访问动态内存,因此不会泄漏!


您可能还对std::unique_ptr感兴趣,它将为您执行内存管理,因此您完全不必担心泄漏!