Segmentation fault

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
netai
記事: 2
登録日時: 1年前

Segmentation fault

#1

投稿記事 by netai » 1年前

大学の課題でプログラミングをしています。
コンパイルは通ったのですが、Segementation fault(コアダンプ)になりました。

以下、実行結果です。
head value:429
リストの要素数:6
429 591 531 494 932 956
枢軸値:429
デバッグ:429
デバッグ:429
Segmentation fault (コアダンプ)


以下、問題があると思っている箇所です。プログラムの一部でごめんなさい。

コード:

printf("枢軸値:%d\n",pivot);

  while(p->next!=NULL){
    printf("デバッグ:%d\n",p->value);
    printf("デバッグ:%d\n",pivot);
    
    if(p->value==pivot){
      printf("デバッグ");
while文内、if文前のp->valueとpivotの値の表示はできているのですが、
if文内の「デバッグ」の表示がされていないので、
if文の条件式に問題があると思っています。
が、何がおかしいのかわかりません。

どなたか分かる方いましたら教えて頂きたいです。
よろしくお願いします。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: Segmentation fault

#2

投稿記事 by みけCAT » 1年前

コード:

printf("デバッグ");
による出力がバッファに残ったまま書き出されずに強制終了している可能性があります。

コード:

printf("デバッグ\n");
のように改行を追加してみてください。

コード:

printf("デバッグ");
fflush(stdout);
のように出力をフラッシュする処理を入れると、より確実でしょう。

コード:

デバッグ:429
デバッグ:429
が表示できているということは

コード:

while(p->next!=NULL){
は落ちずに実行できており、この時の p の値に問題は無さそうですね。
そしてここから

コード:

if(p->value==pivot){
までの間に p の値を書き換えるコードは無いようなので、Segmentation faultの原因は別の場所にあるでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

netai
記事: 2
登録日時: 1年前

Re: Segmentation fault

#3

投稿記事 by netai » 1年前

みけCATさん
おっしゃったとおりにしたら、if文内までの実行が確認できました。
なんとか先に進めそうです、ありがとうございます。

返信

“C言語何でも質問掲示板” へ戻る