2016-09-01 5 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

_デバッグヘルプ(「なぜこのコードは機能していませんか」)を検索する質問には、問題、エラー、および質問自体に再現するのに必要な最短コードが含まれている必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:最小、完全、および検証可能なexample._ –

+2

の作成方法デバッガでクラッシュをキャッチしようとしましたか?あなたのコードのどこでそれが起こりますか?関係するすべての変数の値は何ですか?あなたは[Valgrind](http://valgrind.org/)のようなメモリデバッガを使ってみましたか?構築時に使用する最適化フラグ(存在する場合)最後に、[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)がなくても、あなたを適切に助けることは本当に不可能です。 –

答えて

-1

なぜ私はそれを解決するのか分かりませんが、私は問題を見つけました。 (ループ内)内側のプリントで - 「\ n」は終わりがある必要がある:すべての手助けしようとしているため

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

感謝。

+0

最初に投稿された 'printf()'ステートメントはseg faultイベントを引き起こさないので、何か他のものを変更しておく必要があります。 I.コード内にどこか未定義の動作があります。機能全体を投稿することを強く推奨します。そのため、問題の実際の原因を見つけるのを手助けすることができます。 – user3629249

+0

'stdout'と' stderr'はデフォルトで行バッファリングされています。つまり、 'putc()'、 'puts()'、 'fprintf()'を使って '\ n 'バッファが満杯です。 'fflush()'を呼び出すと、バッファも同時に流出します。 'setvbuf()'関数は、ストリームのモードを設定します。これは、 'バッファされない'、 'ラインバッファされた'、または '完全にバッファされた'に設定できます。 –

+0

あなたのsegfaultはおそらく他のものと関連しています。あなたの抜粋には「攻撃的な」コードは含まれていません。 –

関連する問題