關於c++中map的記憶體佔用問題

來源:互聯網
上載者:User

     研究了下c++中map的記憶體佔用情況。很多人說map中的erase以及clear不能釋放記憶體,這幾天實驗了下,這個說法是不確切的,較為準確的說法應該是,map中的erase以及clear,不能,“馬上”釋放記憶體。map有自己的機制回收記憶體,用erase以及clear之後,如果沒有特殊需求,可以認為那部分記憶體已經釋放了。map不會馬上釋放刪掉內容的記憶體,而是會對記憶體進行“預留”,如果確實很長時間用不到預留的記憶體,才會釋放。

     做了這樣幾個實驗,P1不停的填充map,監控程式記憶體佔用情況。自然記憶體是不斷上升的。P2則是向map中填充200M資料後,一個一個進行erase到0個,然後再重新填充。可以看到,填充過程記憶體連續增加,可是erase過程,記憶體沒有連續減少。而是一段時間之後,忽然減少的2M左右。重新填充,記憶體再增加至之前的200M。P3的過程是,先向Map中填充200M資料,然後erase掉偶數index的資料(即刪掉100M),然後再填充200M,如此往複。發現記憶體佔用開始不斷增加,到刪除100M資料時,記憶體不變。第二輪填充開始,記憶體仍不變,直到填充100M以上後,記憶體開始繼續增加。

    由以上實驗可知,map有較為科學的記憶體回收機制。可以認為clear以及erase的空間,map會在合適的時間回收。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.