2017-02-19 22 views
-1

我已經創建了這個功能,但對於大多數輸入,它似乎崩潰,並給我一個「分段錯誤:11」錯誤。對於以下代碼可能導致分段錯誤的輸入?此代碼如何產生分段錯誤?

int cubic_runtime(int const * const data, int n) 
{ 
    int max = 0; 
    int i; 
    int j; 
    int k; 
    int sum = 0; 
    for(i = 0; i <= n - 1; i = i + 1){ 
     for(j = i; j <= n - 1; j = j + 1){ 
      sum = 0; 
      for(k = i; k <= j; k = k + 1){ 
       sum = sum + data[k]; 
      } 
      if(sum > max){ 
       max = sum; 
      } 
     } 
    } 
    return max; 
} 
+2

那麼,例如,指向非法內存位置的數據的任何值。用調試器來演示你的例子,你應該立即看到答案。 –

+0

@johnelemans一個調試器?我在哪裏可以找到這樣的事情? – RothX

+1

請提供整個代碼。 –

回答

0

我可以添加以避免seg故障的一件事是:總是驗證/健全性檢查提供的輸入。在這種情況下,'n'值可能引發潛在故障。我認爲'數據'是好的,因爲它是隻讀的,我們只是閱讀。

相關問題