2012-03-24 11 views
0

実際にはという単純なプログラムがありますが、動作しません。さらに、それはプログラムの流れに深刻な疑念を与える。gcc4.2.1で説明できないエラー(Segm.fault 11)

プログラムは、この(と仮定すると、必要なヘッダ)のようなものです:

main(){ 
printf("hello1"); 
printf("hello2"); 
somefunction(); 
} 

出力は少なくとも特有のものである:それは戻って私を与えるだけで最初のprintf(hello1)、直後にプログラムがエラーで終了します」セグメント化障害11 "。 の場合、 'somefunction()'を削除すると、2番目のprintfはALSOと表示されます。

私の 'somefunction()'に何らかの問題がある場合は、2番目のprintf()は表示されないようにする必要があります。

+1

すべての警告でコンパイルしてください。 –

答えて

5

あなたのsomefunctionは、汚いことをして、printfがバッファをフラッシュする前にプロセスが強制終了されます。試してみることができます:

printf("hello1"); 
printf("hello2"); 
fflush(stdout); 
somefunction(); 
+0

ありがとう、私はこれを知らなかった。今、私は何らかの機能をデバッグしようとすることができます。 – ClausW

2

stdout is line bufferedです。これは、あなたの出力がどこかでバッファリングされて後で印刷されることを意味しますが、somefunctionがクラッシュするので、印刷する機会はありません。

fflush(stdout); 

それとも、新しいライン印刷:

あなたはfflushを使用してバッファをフラッシュするか、一般的には

main(){ 
    printf("hello1\n"); 
    printf("hello2\n"); 
    somefunction(); 
} 
0

を、あなたは常にprint文の最後に\nを置く必要があり、あなたが何をしているのか正確に分からなければ。これにより、ステートメントが実際に出力されるようになります。

printf("hello1\n"); 
printf("hello2\n"); 
somefunction(); 
関連する問題