【发布时间】:2013-08-17 11:49:02
【问题描述】:
istream& operator>>(istream& in,hhh& hh){
double *arr,*temp;
int i=0;
char c;
c=in.peek();
while(c!='\n'){
if(i>=1){
temp=new double[++i];
for(int j=0;j<i-1;j++){
temp[j]=arr[j];
}
arr=temp;
}
else {
arr=new double[++i];
}
in>>arr[i-1];
c=in.peek();
}
hh.set(arr,i);
delete [] arr;
return in;
}
我有内存泄漏吗?我想知道我是否有,但我不确定,谢谢你的帮助。
【问题讨论】:
-
你会的。在写
arr = temp;之前,首先你必须delete [] arr;。 (另外,将temp和arr初始化为nullptr,以便您第一次可以安全地delete []。) -
了解如何使用
std::vector<double>。
标签: c++ memory-leaks