C++ vector的釋放

c++中vector的一個特點是: 內(nèi)存空間只會增長,不會減小。即為了支持快速的隨機訪問,vector容器的元素以連續(xù)方式存放,每一個元素都挨著前一個元素存儲。設(shè)想,如果每次vector添加一個新元素時,為了滿足連續(xù)存放這個特性,都需要重新分配空間、拷貝元素、撤銷舊空間,這樣性能就會非常慢,所以,實際上分配時其容量要比當(dāng)前所需容量更多,即vector預(yù)留了一些額外的存儲區(qū),這樣就不必單獨為每個新元素重新分配內(nèi)存空間,減少開銷。 另外,在vector中內(nèi)存只增不減體現(xiàn)在 - 比如首先分配了10000個字節(jié),然后erase掉后面9999個,留下一個有效元素,但是實際上內(nèi)存占用仍然為10000個,所有內(nèi)存空間是在vector析構(gòu)的時候才能被系統(tǒng)回收。所以,即使使用clear,vector所占用的內(nèi)存空間依然如故,無法保證內(nèi)存的回收。

那應(yīng)該如何釋放呢:

1. 對于數(shù)據(jù)量不大的vector,沒有必要自己主動釋放vector,一切都交給操作系統(tǒng);

2.對于大量數(shù)據(jù)的vector,在vector里面的數(shù)據(jù)被刪除后,主動去釋放vector的內(nèi)存就變得很有必要了!我們可以使用swap方法來主動釋放內(nèi)存。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容