我是一个初学者,我对一个函数返回一个问题,该函数返回一个指向C ++中双精度数组的指针。该函数采用两个数组,并将每个元素相加,就像矢量和一样。
我认为正确的做法是...
double *myfunction(double *x, double *y, int n){
double *r = new double[n];
for(int i=0;i<n;i++){
r[i] = x[i]+y[i];
}
return r;
}
问题是我在这样的主函数的while循环中使用该函数
int main(){
double *x, *y, *s;
x = new double[2];
y = new double[2];
x = {1,1};
y = {2,2};
while(/*some condition */){
/*some process...*/
s = myfunction(x,y, 2);
/*some process...*/
}
delete[] x;
delete[] y;
delete[] s;
}
我的问题是内存泄漏如何?每次我使用“ myfunction”(在while循环内)时,我都会为变量“ s”保留内存,这意味着如果while循环执行了5次,则程序为变量“ s”保留了5倍的内存。 “?
有没有一种方法可以做到这一点(从函数返回指向数组的指针并在循环内使用该函数)?
在此先谢谢您。
我会说更正确的写法myfunction
是:
std::vector<double> myfunction(double *x, double *y, int n){
std::vector<double> r;
r.reserve(n);
for(int i=0;i<n;i++){
r.push_back(x[i]+y[i]);
}
return r;
}
这样,您不必担心内存泄漏,而while循环可以是:
while (/* some condition*/) {
std::vector<double> s = myfunction(x, y, 2);
// whatever
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句