2017-01-15 66 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()。)

相關問題