看板 C_and_CPP 關於我們 聯絡資訊
我在使用完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
yoco315:你 map 裡面塞什麼東西 05/12 21:07
chrisdar:a.swap(map()) 05/12 21:08
jesony1:我的map長這樣 map<string,vector<type> > 05/12 21:10
jesony1:我有試過map< string,vector<node> > ().swap(mymap)~沒用 05/12 21:13
jerohands:可以請問你第2項value的vector有先作clear()的動作嗎? 05/12 22:24
chrisdar:vector<node>().swap(vector<node>()) XDD 05/12 22:46
yoco315:type 是啥.. 05/13 01:02
jesony1:type是我自己定義的structure 05/13 13:15
jesony1:我有試過先clear()掉vector再用vector<node>().swap(vecto 05/13 13:40
jesony1:還是沒用~ 05/13 13:40
jerohands:建議你 code 貼上來吧 05/13 16:56
※ 編輯: jesony1 來自: 118.160.182.68 (05/13 17:37) ※ 編輯: jesony1 來自: 118.160.182.68 (05/13 17:39)
jerohands:可以請問為何要作swap()?在clear()之後作這項似乎沒有 05/14 00:40
jerohands:意義。基本上寫法都沒問題,那可能的問題就在於你定義的 05/14 00:40
jerohands:node的資料型別,裡頭是否有記憶體需要釋放? 05/14 00:41