[STL ] 使用map的記憶體問題

看板C_and_CPP (C/C++)作者 (小豬先生)時間16年前 (2009/05/12 20:54), 編輯推噓7(707)
留言14則, 4人參與, 最新討論串1/3 (看更多)
我在使用完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

05/12 21:07, , 1F
你 map 裡面塞什麼東西
05/12 21:07, 1F

05/12 21:08, , 2F
a.swap(map())
05/12 21:08, 2F

05/12 21:10, , 3F
我的map長這樣 map<string,vector<type> >
05/12 21:10, 3F

05/12 21:13, , 4F
我有試過map< string,vector<node> > ().swap(mymap)~沒用
05/12 21:13, 4F

05/12 22:24, , 5F
可以請問你第2項value的vector有先作clear()的動作嗎?
05/12 22:24, 5F

05/12 22:46, , 6F
vector<node>().swap(vector<node>()) XDD
05/12 22:46, 6F

05/13 01:02, , 7F
type 是啥..
05/13 01:02, 7F

05/13 13:15, , 8F
type是我自己定義的structure
05/13 13:15, 8F

05/13 13:40, , 9F
我有試過先clear()掉vector再用vector<node>().swap(vecto
05/13 13:40, 9F

05/13 13:40, , 10F
還是沒用~
05/13 13:40, 10F

05/13 16:56, , 11F
建議你 code 貼上來吧
05/13 16:56, 11F
※ 編輯: jesony1 來自: 118.160.182.68 (05/13 17:37) ※ 編輯: jesony1 來自: 118.160.182.68 (05/13 17:39)

05/14 00:40, , 12F
可以請問為何要作swap()?在clear()之後作這項似乎沒有
05/14 00:40, 12F

05/14 00:40, , 13F
意義。基本上寫法都沒問題,那可能的問題就在於你定義的
05/14 00:40, 13F

05/14 00:41, , 14F
node的資料型別,裡頭是否有記憶體需要釋放?
05/14 00:41, 14F
文章代碼(AID): #1A2N5h97 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1A2N5h97 (C_and_CPP)