vector容器記憶體清除測試

2021-06-29 11:24:46 字數 498 閱讀 5804

實際應用中僅用clear不足以清除容器額外分配出來的記憶體空間,需要借助

swap方法實現清除,測試**如下,測試的時候可以開啟任務管理器跟蹤觀察記憶體變化。

using namespace std;

vector v;

int main ()

{

for(int i=0; i<100000; i++) 

v.push_back("haha");

v.clear();

// 此時再次檢查, 仍然占用54m

cout << "vector 的 容量為" << v.capacity() << endl;

vector(v).swap(v);

cout << "vector 的 容量為" << v.capacity() << endl;

return 0;

//參考文章

swap清除vector占用記憶體

vector與deque不同,其記憶體占用空間只會增長,不會減小。比如你首先分配了10,000個位元組,然後erase掉後面9,999個,則雖然有效元素只有乙個,但是記憶體占用仍為10,000個。所有空間在vector析構時 empty 是用來檢測容器是否為空的,clear 可以清空所有元素。但是即...

vector刪除元素與清除記憶體空洞

問題 stl中的vector容器常常造成刪除假象,這對於c 程式設計師來說是極其討厭的,effective stl 大師已經將之列為第17條,使用交換技巧來修整過剩容量。記憶體空洞這個名詞是網上的學者給出的,我覺得用來描述這個基本現象特別容易提醒自己vector刪除的這個陷阱。首先給出一段 35 v...

STL容器vector的記憶體問題

在stl的容器中,vector可以說是最容易理解和使用的容器了,以前使用陣列的時候,如果不確定有多少資料要儲存,就會預先分配乙個大的陣列,如果實際沒有用到那麼多,又會浪費很多的記憶體資源,如果不分配大的陣列又擔心不夠用,有了vector之後,這些問題再也不用擔心了,vector會動態的增長空間,當v...