我有幾個關於內存管理如何爲矢量工作的問題/示例。C++內存管理對象矢量
vector<int> vec1(10);
vector<int> vec2(10);
vec1 = vec2;
在這種情況下,vec1的舊內存現在無法訪問。它仍然是一個內存泄漏嗎?或者vec2的舊內存會意識到沒有任何引用它並得到清理?
在另一示例
struct foo
{
vector<int> foo_vec(50);
int* arr;
}
void myFunction()
{
vector<foo> vec(10);
vec[0].arr = new int[50];
vec.erase(vec.begin());
}
由於我其含有與所分配的存儲器ARR第一矢量元件上使用的erase()
,確實erase()
釋放該存儲器或是否需要將其釋放擦除手動之前?另外當vec
超出範圍,vec
中的所有foo_vec
載體自動清理?謝謝你的幫助。
如果'vec1'和'vec2'包含結構呢?那麼會有內存泄漏嗎? – locke14 2014-04-04 07:52:05
這取決於。當你把東西放入矢量中時,你需要決定誰擁有這些實例。 – 2014-04-04 21:46:40