我将动态分配的类指针存储在向量中,如下所示:
现在,如果我需要释放Test对象,我必须遍历整个向量并逐个释放,然后进行清除。
有没有vector中释放所有内部对象的函数?
我将动态分配的类指针存储在向量中,如下所示。
vector<Test *> v;
Test *t1 = new Test;
Test *t2 = new Test;
v.push_back(t1);
v.push_back(t2);
现在,如果我需要释放Test对象,我必须遍历整个向量并逐个释放,然后进行清除。
for(int i = 0; i<v.size(); i++)
{
delete v[i];
}
v.clear();
在vector中有没有释放所有内部对象的函数。该函数应调用每个对象的Test类析构函数。 我理解Vector类很难确定指针是局部对象的地址还是动态分配的地址。 但是,只要开发人员确信所有对象都是动态分配的,他就可以使用提供的释放函数。
虽然vector被视为高级数组,但在数组中释放对象要容易得多,如下所示。
Test *a = new Test[2];
delete []a;
有没有vector中释放所有内部对象的函数?
Test* a = ...
和delete[] a;
, 在第一种情况下,类型是指向Test的指针(实际上是一个数组,但总的来说,在我看来将类型写成一个整体会更好:Class* someObject
),而在第二种情况下,你正在使用delete[]
运算符删除a
,而不是对[]a
使用delete
运算符,这两者并不相同。 - rubenvb