作者jesony1 (小豬先生)
看板C_and_CPP
標題[STL ] 使用map的記憶體問題
時間Tue May 12 20:54:02 2009
我在使用完map後會使用map.clear()來清空map
但隨著程式的執行時間越長~記憶體的使用率也不斷攀升
直到記憶體被吃光為止~
map.clear()似乎沒有把記憶體還給系統
請問這種情形該如何解決呢?謝謝大家
PS.我是在Linux上跑 gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)
我的code大概是這樣
while(...){
map< string,vector<node> > map_graph;
map< string,vector<node> >::iterator it_map_graph;
... //在map中插入許多vector<node>
it_map_graph=map_graph.begin();
while(it_map_graph!=map_graph.end()){
((*it_map_graph).second).clear();
vector<node>().swap((*it_map_graph).second);
it_map_graph++;
}
map_graph.clear();
map< string,vector<node> > ().swap(map_graph);
}
不知道這樣寫對嗎?
我也有試過設環境變數GLIBCXX_FORCE_NEW=1~也沒用
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.182.68
1F:推 yoco315:你 map 裡面塞什麼東西 05/12 21:07
2F:推 chrisdar:a.swap(map()) 05/12 21:08
3F:→ jesony1:我的map長這樣 map<string,vector<type> > 05/12 21:10
4F:→ jesony1:我有試過map< string,vector<node> > ().swap(mymap)~沒用 05/12 21:13
5F:推 jerohands:可以請問你第2項value的vector有先作clear()的動作嗎? 05/12 22:24
6F:推 chrisdar:vector<node>().swap(vector<node>()) XDD 05/12 22:46
7F:推 yoco315:type 是啥.. 05/13 01:02
8F:→ jesony1:type是我自己定義的structure 05/13 13:15
9F:→ jesony1:我有試過先clear()掉vector再用vector<node>().swap(vecto 05/13 13:40
10F:→ jesony1:還是沒用~ 05/13 13:40
11F:推 jerohands:建議你 code 貼上來吧 05/13 16:56
※ 編輯: jesony1 來自: 118.160.182.68 (05/13 17:37)
※ 編輯: jesony1 來自: 118.160.182.68 (05/13 17:39)
12F:推 jerohands:可以請問為何要作swap()?在clear()之後作這項似乎沒有 05/14 00:40
13F:→ jerohands:意義。基本上寫法都沒問題,那可能的問題就在於你定義的 05/14 00:40
14F:→ jerohands:node的資料型別,裡頭是否有記憶體需要釋放? 05/14 00:41