我有一些关于内存管理如何用于 Vectors 的问题/示例。
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());
}
由于我erase()
在第一个包含 arr 的向量元素上使用了分配的内存,是erase()
释放该内存还是需要在擦除之前手动释放它?此外,当vec
超出范围时,是否会自动清理所有foo_vec
向量?vec
谢谢你的帮助。