map的内存释放问题
生活随笔
收集整理的這篇文章主要介紹了
map的内存释放问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
map.clear()
只是把map清空了,但是內存沒有釋放,如果要釋放內存不止是要clear()掉,還要和一個空的map來進行swap,將內存釋放。
注意map中如果元素不是基本類型,也要進行內存釋放,如指針,vector要尤其注意,否則map占的內存太大,會造成程序崩潰。
下面是幾個例子:
map<string,vector<int> > map1;//插入數據map<string,vector<int> >::iterator itit1;vector<int> empty_intVector;for(itit1 = map1.begin();itit1!=map1.end(); itit1 ++){itit1->second.swap(empty_intVector);itit1->second.clear();}map<string,vector<int> > empty_map1;map1.swap(empty_map1);map1.clear();multimap<int,string> multimap1[5];//插入數據multimap<int,string> empty_multimap1;for(int i=0;i<5;i++){multimap1[i].swap(empty_multimap1);}multimap1->clear();
?
注意map<string,vector<int> > map1;
在插入數據時,也別忘記將vector<int>給swap為空的。
總結
以上是生活随笔為你收集整理的map的内存释放问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++ 利用内存映射读取大文件
- 下一篇: c++ 从混合中英文数字等的string