【发布时间】:2013-12-26 16:06:55
【问题描述】:
我最近第一次使用 Visual Leak Detector 分析了我的代码,它表明向量中有泄漏,这是我没有预料到的。代码是这样的:
void func()
{
std::vector<MsgUnit> msgVec;
do
{
// msgVec.clear(); // do I need to do this to avoid a leak?
msgVec = m_obj->returnMsgUnitVector();
}
while (someConditionNotMet);
// process msgVec
return;
}
MsgUnit 有一个拷贝构造函数和析构函数。
我还没有时间进行深入测试,但快速修复似乎表明取消注释 clear() 方法可以消除泄漏。
我想知道标准对这种行为有何规定。我是否需要在分配给它之前清除向量以避免泄漏?
【问题讨论】:
-
这也将有助于添加与调用
m_obj->returnMsgUnitVector();对应的方法声明。 -
@Wolf 尝试使用方法名来完成这项工作 =)
标签: c++ vector memory-leaks stdvector