2013-08-08 2 views
0

프로그램을 실행할 때마다 메시지가 나타납니다 : 분할 오류 (코어 덤프). 나는 약간의 연구를 시도하고 불법 메모리에 할당하는 것과 관련이있는 것으로 보인다. 나는 또한 프로그램 디버깅을 시도했는데 문제가 linearsort() 함수에 있다고 생각하기 때문에 주석 처리가 끝난 후 나머지 명령문은 올바르게 작동합니다.오류 : 분할 오류 (코어 덤프 됨) 배열?

#include <iostream> 

using namespace std; 

int main() 
{ 
    void linearsort(int [], int); 

    int arr[10]; 
    for(int j = 0; j < 10; j++) 
     arr[j] = j +1; 

    linearsort(arr,10); 
    for(int i = 0; i < 10; i++) 
     cout << arr[i] << " "; 

    cout << endl; 

    cin.get(); 
    return 0; 



} 

void linearsort(int arr[],int n) 
{ 
    int temp; 

    for(int pass = 0; pass < n - 1; n++) 
     for(int cand = pass + 1; cand < n; cand++){ 
      if(arr[pass] > arr[cand]){ 
       temp = arr[pass]; 
       arr[pass] = arr[cand]; 
       arr[cand] = temp; 
      } 
     } 
} 
+0

'n ++'는'pass ++'이어야합니다. – Dave

+0

그런 것들을 위해서 스스로 디버깅 할 수 있습니다. 도움을 요청하는 것보다 스스로 버그를 찾는 것이 훨씬 더 가치가 있습니다. 'lineoutort '에 던져 넣은 하나 또는 두개의'cout << ... << endl' 또는 디버깅 세션 (예 : gdb). 그러면 문제를 꽤 쉽게 발견 할 수 있습니다. ;) – Pikrass

답변

7
for(int pass = 0; pass < n - 1; n++) 

당신은 잘못된 값을 증가되어, n++pass++해야한다. 지금 의미는 배열의 바운드 인덱스에 액세스하는 것입니다.

+0

10 초 후에 나타납니다. 젠장. :) – Pikrass

+3

@ 피크 라스 경주의 스릴;) – Borgleader