作者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