2017-07-07 75 views
0

我試圖計算一個比率,它在我的分子數組滿了0的情況下工作,但是當我在分子數組中有值時會破壞程序。分段違例分段錯誤C++分子數組中的值

223 Double_t *ratio_calculations(int bin_numbers, Double_t *flux_data) 
224 { 
225   Double_t *ratio; 
226   for(int n = 0; n <bin_numbers; n++) 
227   { 
228     if(0 < flux_data[n]) 
229     { 
230 
231       ratio[n] = ygraph.axis_array[n]/flux_data[n]; 
232     } 
233   } 
234   return ratio; 
235 } 

我不知道爲什麼會發生,是的,我已經檢查了我的數組的長度和他們是一樣的bin_numbers的價值。

+3

。您忘了內存分配給比。 – user1438832

+0

@ user1438832您應該將其作爲回答發佈 –

回答

1

您需要確定正確的大小ratio,分配的內存,最後,請確保您填寫ratio 正確地爲您提供if聲明過濾無效數據:

Double_t *ratio_calculations(int bin_numbers, Double_t *flux_data) { 
    // get correct size 
    int sz = 0; 
    for (int n = 0; n < bin_numbers; n++) { 
    if (flux_data[n] > 0) sz++; 
    } 
    Double_t *ratio = new Double_t[sz]; 
    // allocate with non-n index, as n increments even when data is invalid (flux_data[n] < 0) 
    int r_idx = 0 
    for (int n = 0; n <bin_numbers; n++) { 
    if (flux_data[n] > 0) { 
     ratio[r_idx] = ygraph.axis_array[n]/flux_data[n]; 
     r_idx++; 
    } 
    } 
    return ratio; 
} 
+0

記得在您不再需要時刪除比例!或者更好地使用矢量。 – Logman

+0

@Logman。我希望OP知道這一點;)。 OP,'刪除[]比率;'當你完成。 –