我有几个关于内存管理如何为矢量工作的问题/示例。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