VC STL vector 内存泄漏,该怎么解决
VC STL vector 内存泄漏
今天被内存泄漏整惨了。经过很纠结的测试,终于找到原因:
vector!
对,就是它。
程序里用它来保存分阶段的计算结果,当程序终止时,产生了内存泄漏
vector 可以不显式释放内存,但这里是不行的,会有内存泄漏!想不通的举个手,我也想不通
最后用了一个变通方式:
在类的析构中
不知道大家有没有遇到这类问题,有没有更好的解决办法呢。
------解决方案--------------------
m_result.insert(m_result.end(), result.begin(), result.end());
=========================================
插入的是new堆,所以要释放,但是析构函数不是这样写的。
今天被内存泄漏整惨了。经过很纠结的测试,终于找到原因:
vector!
对,就是它。
程序里用它来保存分阶段的计算结果,当程序终止时,产生了内存泄漏
class myclass
{
...
vector<int> m_result
};
...
void myclass:function(void)
{
vector<int> result;
...//获得阶段数据
m_result.insert(m_result.end(), result.begin(), result.end());
...
}
vector 可以不显式释放内存,但这里是不行的,会有内存泄漏!想不通的举个手,我也想不通
最后用了一个变通方式:
在类的析构中
myclass::~myclass()
{
...//其他处理
vector<int>().swap(m_result);//增加这句后,就不再有内存泄漏
}
不知道大家有没有遇到这类问题,有没有更好的解决办法呢。
VC
内存泄漏
STL
------解决方案--------------------
m_result.insert(m_result.end(), result.begin(), result.end());
=========================================
插入的是new堆,所以要释放,但是析构函数不是这样写的。