【发布时间】:2011-04-01 14:56:24
【问题描述】:
我将动态分配的类指针存储在如下向量中。
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 类的指针是本地对象的地址还是动态分配的,这很困难。 但是,只要开发人员确信所有内容都是动态分配的,他就可以使用释放功能(如果提供)。
虽然向量被视为高级数组,但释放数组中的对象要容易得多,如下所示。
Test *a = new Test[2];
delete []a;
vector 中是否有任何函数可以释放所有内部对象?
【问题讨论】:
-
我可以评论一下,写
Test* a = ...和delete[] a;更清楚,在第一种情况下,类型是一个指向测试的指针(实际上是一个数组,但总的来说它在我的将类型写成一体的意见:Class* someObject),在第二种情况下,您在a上使用运算符delete[],而不是[]a上的运算符delete,这几乎不一样。
标签: c++