Segmentation fault

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: Segmentation fault

Re: Segmentation fault

#3

by netai » 1年前

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

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の原因は別の場所にあるでしょう。

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文の条件式に問題があると思っています。
が、何がおかしいのかわかりません。

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

ページトップ