2014-01-20 100 views
0

我有一個問題想問你......我在C++中返回一個雙指針的函數:錯誤的返回指針C++

double * Calc_ToF_low::CalcToF(int16_t* señal, int fs){ 


    double ToF_est [4]={0,0,0,0}; 
    ToF_est[0]=time_est(result2,fs); 
    ToF_est[1]=ToF_est[0]; 
    ToF_est[2]=ToF_est[0]; 
    ToF_est[3]=ToF_est[0]; 


    return(ToF_est); 

而且在主:

double *ToF_est; 
ToF_est=ToFobject.CalcToF(señal,fs); 

當我做:

cout<<ToF_est[0]<<endl; 

不具有相同的值...爲什麼?

感謝

+2

您是否返回本地變量的地址。這是UB。 – Borgleader

+0

啓用您的編譯器警告。 –

回答

3

不能返回一個指向自動局部變量。它調用未定義的行爲。函數返回後,ToF_est不再存在。
如果你想返回一個指針,然後使用動態分配(new)。

double *ToF_est = new double [4];