首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

VC STL vector 内存泄漏,该怎么解决

2013-06-25 
VC STL vector 内存泄漏今天被内存泄漏整惨了。经过很纠结的测试,终于找到原因:vector!对,就是它。程序里用

VC STL vector 内存泄漏
今天被内存泄漏整惨了。经过很纠结的测试,终于找到原因:
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堆,所以要释放,但是析构函数不是这样写的。

热点排行