【发布时间】:2015-08-07 13:05:17
【问题描述】:
我是一名初级程序员,我有一个关于在 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倍的内存“?
有没有办法做到这一点(从函数返回指向数组的指针并在循环中使用该函数)??
先谢谢你了。
【问题讨论】:
-
std::unique_ptr<double> s(myfunction(x,y,2));,但老实说,我会从一开始就使用std::vector来处理此代码中的所有动态分配。 -
x = {1, 1}的语法是否有效? -
@WhozCraig 应该是
std::unique_ptr<double[]>? -
@songyuanyao 是的,可能。刚吃完晚饭回来给了一杯大小适中的玛格丽塔酒=P
标签: c++ arrays function pointers return