将函数表达式用作另一个函数的参数是不好的做法吗?

时间:2017-01-15 03:27:03

标签: c

我定义了一个将GSL向量转换为数组的函数。 该函数返回一个指向数组的指针。

double * vec2array(const gsl_vector * v){
  double * out = calloc(v->size,sizeof(double));
  for( int i = 0; i < v->size; i++ ){
    out[i] = gsl_vector_get(v,i);
  }
  return out;
}

使用返回值作为另一个函数的参数是不好的做法 即:

plot(vec2array(x),vec2array(y));

是内存泄漏吗?

1 个答案:

答案 0 :(得分:6)

将函数的返回值直接用作参数本身并没有错。

然而,您对它的特殊使用确实会泄漏内存。这很容易看到,因为你永远不会在free()的内存上调用calloc()。 (除非您的plot()函数至少调用free()。)