从C ++中的函数返回指向数组的指针?

胡娟

我是一个初学者,我对一个函数返回一个问题,该函数返回一个指向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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从C ++中的函数返回指向数组的指针?

来自分类Dev

函数返回指向C中数组类型的指针

来自分类Dev

在C函数中传递指向数组的指针

来自分类Dev

C#Marhsal函数返回指向结构数组的指针

来自分类Dev

从C函数返回指向二维数组的指针

来自分类Dev

返回指向数组的指针C ++

来自分类Dev

如何加快在C ++中返回指向对象的指针的函数?

来自分类Dev

是否在C中的结构内返回指向char数组的指针?

来自分类Dev

无法“指向” C中传递的函数指针数组

来自分类Dev

指向结构中数组的C指针传递给函数

来自分类Dev

C:指向返回枚举的函数的函数指针

来自分类Dev

指向C ++中函数的指针

来自分类Dev

指向C中数组的指针

来自分类Dev

函数返回指针与函数返回数组在C中

来自分类Dev

指向C ++中的函数指针的指针

来自分类Dev

指向C中的int指针数组的指针

来自分类Dev

C函数返回指向结构的指针

来自分类Dev

c ++从函数返回指向结构的指针

来自分类Dev

Fortran接口调用C函数,该函数返回指向数组的指针

来自分类Dev

C指向函数动态数组的指针?

来自分类Dev

C指向函数动态数组的指针?

来自分类Dev

指向C中内置函数的函数指针

来自分类Dev

Typedef指向C ++中C函数的指针

来自分类Dev

在C中返回指向结构的指针

来自分类Dev

指向C#中的函数的指针

来自分类Dev

指向C中动态数组的指针

来自分类Dev

指向C ++中对象数组的指针

来自分类Dev

使指针指向c中的字符数组

来自分类Dev

指向c中匿名结构数组的指针