-
C/C code
-
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ void func() { map<int,int>m; for(int i=0;i<0xffffff;i ) m.insert(make_pair(i,i)); }
以上函数中,m是局部变量,
但是func函数返回时并没有释放内存
我猜测是因为make_pair的内存是在堆上分配的
请问怎样写才能在退出函数时自动释放内存?
网友回复:根据???
网友回复:我观察windows资源治理器发现跳出函数的时候内存没有减少
同样的代码,把map换成vector就没有这个问题
网友回复:跟踪下不就知道了
网友回复:make_pair的内存是在堆上分配的
显然不对,是存在栈里面的,退出函数作用域自动释放
网友回复:那我上面说的问题是怎么回事呢,
用资源治理器看,单步执行状态下,确实函数返回时内存不减少,而用vector就会恢复到调用前的内存
调试手段我还不太熟
我用的stlport,vs2005下面
网友回复:似乎会自动释放吧!
网友回复:没有吧,在我的机器上很明显,而且根本不用0xffffff,四个f就够明显了。
网友回复:你单步跟踪的时间,跟到函数的闭括号时,对于调试器来说,那个“位置”是局部变量析构之前的执行点。你应该