我在下面的矢量中存儲動態分配的類指針。與數組相比,釋放矢量的問題
vector<Test *> v;
Test *t1 = new Test;
Test *t2 = new Test;
v.push_back(t1);
v.push_back(t2);
現在,如果我有免費的測試對象,我必須通過整個向量和免費一個循環接一個,然後做一個明確的。
for(int i = 0; i<v.size(); i++)
{
delete v[i];
}
v.clear();
是否有向量中的任何函數來釋放所有內部對象。該函數應該爲每個對象調用Test class destructor。 我知道Vector類的指針是本地對象的地址還是動態分配是困難的。 但是,每當開發者確信所有的動態分配,他都可以使用釋放函數(如果提供的話)。
雖然vector被視爲高級數組,但釋放數組中的對象比下面的要容易得多。
Test *a = new Test[2];
delete []a;
是否有向量中的任何函數來釋放所有內部對象?
我可以評論一下,在第一種情況下,寫'Test * a = ...'和delete [] a;'是更清楚的,類型是指向Test的指針(實際上是一個數組,但一般來說在我看來,把類型寫成一個單詞是更好的:'Class * someObject'),而在第二種情況下,你在'a'上使用運算符'delete []',而在'[' ] a',這幾乎不相同。 – rubenvb 2010-08-20 12:05:16