1. 程式人生 > >vector清空與容量處理

vector清空與容量處理

vector的clear操作可以將vector的資料清空,但是vector的容量不會變化,即分配給vector的記憶體不會收回。如果想收回這些記憶體,可以採取下面的方法:

vector<int> num;
num.push_Back(1);
num.push_back(2);

vector<int> ().swap(num);// 或者 num.swap(vector<int>());


swap()是交換函式,使vector離開其自身的作用域,從而強制釋放vector所佔的記憶體空間,總而言之,釋放vector記憶體最簡單的方法是vector<int>.swap(nums)。當時如果nums是一個類的成員,不能把vector<int>.swap(nums)寫進類的解構函式中,否則會導致double free or corruption (fasttop)的錯誤,(重複釋放記憶體)。

****如果vector中存放的是指標,那麼當vector銷燬時,這些指標指向的物件不會被銷燬,那麼記憶體就不會被釋放。此時需要先將vector中儲存的指標物件依次銷燬。