2017-01-15 39 views
-1

我定义了一个将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)); 

是内存泄漏?

+0

如果你有这样的基本问题,准备好C书可能是一个好主意。 – Olaf

回答

6

将函数的返回值直接用作参数本身没有任何问题。

但是,您的特殊用途会泄漏内存。这很简单,因为您从calloc()获得的内存中永远不会调用free()。 (除非你的plot()函数调用至少free()。)

相关问题