강의로 돌아가기
Peter

signal: segmentation fault (core dumped)

아래의 코드로 Segmentation fault error가 뜨는데, 이유를 모르겠습니다.
우선 에러를 찾기 위해서 다른 코드들은 다 지웠습니다. 결과값이나 알고리즘은 무시해주세요..

if (num[i]==0) 안에서 answer를 업데이트하게 되면, error가 발생합니다.
answer를 if state밖에서 업데이트 하면 괜찮습니다.

answer를 지우고 answer2라는것을 만들어서 if state안에서 같이 업데이트를 시켜보았는데, 마지막에 참조를 안하면, 아무런 문제가 없지만, printf(%d,answer2); 같이 answer2를 참조하면 같은 문제가 나오네요..

무엇이 문제인지 검토 부탁드려요...감사합니다.

#include <vector>
#include <string.h>
#include <stdio.h>


using namespace std;

long long solution(int N) {

    N=10000000; // update N to cause error.

    long long answer = 2;
    long long answer2=2;
    int prime[N];
    int num[N+1];
    int primeidx=0;

    memset(num,0,sizeof(int)*(N+1));

    unsigned int i;
    for (i=3;i<=N;i+=2)
    {
        if (num[i]==0)
        {
            answer = (long long)1; // err if this line locates here
            answer2 = (long long)1; // this is fine

        }
        //answer = (long long)10; // no problem if the line is moved to here
    }
    // printf("%d",answer2); // answer2 also causes error if this line is added
    return answer; 
}
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.