2016-09-01 4 views
-3
의를 입력 할 때

내 코드는 다음과 같습니다세그먼트 오류 (코어 덤프) 루프

int main (void){ 

    int i,j,k,x; 
    . 
    . 
    . 
    printf("before loop\n"); 

    for (x=0; x<5; x++){ 
     printf("loop %d",x); 
     //do something... 
    } 
    . 
    . 
    . 
return 0; 
} 

그런 다음 "루프 전에"인쇄하고는 분할 오류 (코어 덤프) 제공, 따라서 어떤 인쇄되지 않습니다 "루프 #". 그 중 누구와 마주 친 적이 있습니까?

+1

스택 오버플로에 오신 것을 환영합니다! [___MCVE___] (http://stackoverflow.com/help/mcve)를 만드시겠습니까? –

+2

_ 디버깅 도움말을 요청하는 질문 ("이 코드가 작동하지 않는 이유는 무엇입니까?")에는 원하는 동작, 특정 문제 또는 오류 및 질문 자체에서이를 재현하는 데 필요한 가장 짧은 코드가 포함되어야합니다. 분명한 문제 성명이없는 질문은 다른 독자에게 유용하지 않습니다. See : 최소한의 완전하고 검증 가능한 예제를 만드는 방법. –

+2

디버거에서 충돌을 잡으려고 했습니까? 코드에서 어디에서 발생합니까? 관련된 모든 변수의 값은 무엇입니까? [Valgrind] (http://valgrind.org/)와 같은 메모리 디버거를 사용해 보셨습니까? 구축 할 때 어떤 최적화 플래그 (있는 경우)를 사용합니까? 마지막으로, [Minimal, Complete, and Verifiable Example] (http://stackoverflow.com/help/mcve)이 없으면 제대로 도움을 줄 수 없습니다. –

답변

-1

왜 문제를 해결했는지 알 수는 없지만 문제를 발견했습니다. (루프 내부) 내부 인쇄에서 은 - 마지막에 "\ n을"있을 필요가 모든 도우려고에 대한

for (x=0; x<5; x++){ 
    printf("loop %d\n",x); 
. 
. 
. 

감사합니다.

+0

원래 게시 된'printf()'문은 seg 오류 이벤트를 발생시키지 않으므로 다른 것을 변경해야합니다. I.E. 코드에서 정의되지 않은 동작이 있습니다. 문제의 실제 원인을 찾을 수 있도록 전체 기능을 게시하는 것이 좋습니다. – user3629249

+0

'stdout'과'stderr'는 기본적으로 버퍼에 저장되어 있습니다. 즉'putc()','puts()','fprintf()'가'\ n'이 될 때까지 버퍼에 저장됩니다. 또는 버퍼가 꽉 찼습니다. 'fflush()'를 호출하면 버퍼도 유출됩니다. 'setvbuf()'함수는 스트림의 모드를 설정할 수있게 해준다. 그것은 '버퍼링되지 않음', '라인 버퍼링'또는 '완전 버퍼링'으로 설정할 수 있습니다. –

+0

이고 segfault는 아마도 다른 것과 관련이 있습니다. 귀하의 발췌 부분에 "불쾌감을주는"코드가 포함되어 있지 않습니다. –

관련 문제