C++ 此函数或引用使用的向量是否泄漏内存?
我在清除指向使用此方法的根的指针映射时遇到问题。如果我不用这个,一切都好 我需要将从文件中读取的所需数字量转换为双精度向量C++ 此函数或引用使用的向量是否泄漏内存?,c++,vector,getline,lexical,C++,Vector,Getline,Lexical,我在清除指向使用此方法的根的指针映射时遇到问题。如果我不用这个,一切都好 我需要将从文件中读取的所需数字量转换为双精度向量 void LoadNumbersFromFile(const std::string fileName, int countToLoad, std::vector<double>& output) { ifstream in("C:\\" + fileName); std::string line="0"; int inde
void LoadNumbersFromFile(const std::string fileName, int countToLoad, std::vector<double>& output)
{
ifstream in("C:\\" + fileName);
std::string line="0";
int index = 0;
if (in.is_open())
while(getline(in,line))
{
output.push_back(boost::lexical_cast<double>(line));
index++;
if (index>=countToLoad)
break;
}
in.close();
}
我的问题是这个方法会泄漏内存吗
如果是,它是可修复的还是我们有其他选择?不,它不会泄漏内存,除非您的标准库或boost实现中有错误。我觉得很好。但是您的待办事项列表:1重复调用push_back对于std::vector不是一件好事。2检查ifstream析构函数是否在必要时调用close;以防在while循环中引发异常。也就是说,您实际上不需要调用in.close。你可以删除那条线路。为什么你认为有内存泄漏?如果可能的话,打电话给reserve。