2012-11-24 6 views
3

세그먼트 오류가 발생했습니다. 봐 :어레이 세그먼트 화 오류

#include<fstream> 
using namespace std; 
int main(){ 
    int n,i,vector[10001],vectorcopy[10001]; 
    ifstream in("program.in"); 
    ofstream out("program.out"); 
    in>>n; 
    for(i=1;i<=n;i++){ 
     in>>vector[i]; 
     vectorcopy[i]=vector[i]; 
    } 
    return 0;} 

그리고 디버거가 말한다 : 프로그램 신호 SIGSEGV를 recived, 분할 오류

은 무엇을 말해주세요!

+0

입력 파일이 실제로 열렸는지, 즉 오류 검사를 추가해야하는지 확인해야합니다. –

+4

디버거에서 실행하면 호출 스택의 위치와 그 부분에서 어떤 라인이 표시되는지 알 수 있습니다. – Caribou

+0

'n> 10001' – PSIAlt

답변

3

입력 파일 program.in이 올 바르면 프로그램이 (대부분) 올바르게 작동합니다.

  • 나쁜 입력
  • 나는이 program.in 입력 파일에 오류 없어

프로그램에서 확인 입력의 부족 :

10 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
을 나는 당신의 분할 오류 오류가 발생합니다 가정

기타 오류

프로그램에 몇 가지 다른 오류가 있기 때문에 "대부분"이라고 말했습니다. 그들은 지금 (이 "정의되지 않은 동작이"통화 ++ C) 문제를 일으키는 있지만, 조만간되지 않습니다 그들은 것입니다 크기 n의 배열에 대한

  • , 인덱스가 n - 1에서 0과 끝에서 시작; 당신이 vectorcopy 배열을 사용하지 않는

    for (i = 0; i < n; i++) 
    
    • 이 없습니다 : 배열을 사용하는 경우,이처럼 for 명령문을 작성하지 않습니다으로

      for (i = 1; i <= n; i++) 
      

    을 그냥 다시 program.out 출력 파일에 무엇이든 쓰는 것

+0

그는 for 루프에서 vectorcopy 배열을 사용하고 있습니다 – user93353

+0

그는 과거의 벡터 [10000]을 읽지 않고'vectorcopy [10000]'을 쓰지 않는 한 그의 코드는 정상적으로 실행됩니다. –

관련 문제