7

インテル Fortran コンパイラーを使用してコンパイルしたい研究用の古いコードに問題があります。write特定のサブルーチンでは、ループ インデックスの値を出力するだけのステートメントを追加しない限り、セグメンテーション違反が発生します。

do j=1,ne

SOME STUFF

write(*,*) 'j=', j

end

この書き込みステートメントでセグメンテーション違反が修正されるようなエラーの原因は何ですか? (注: j は整数として宣言されます)

ありがとう、キーリー

4

1 に答える 1

6

書き込みステートメントを挿入することによって「修正」されるこのタイプのエラーを引き起こす古典的な方法:

  1. 配列の最後を歩く - コンパイラを使用して境界チェックとデバッグ オプションをオンにして、これをチェックします。

  2. サブプログラムに提供された引数と期待される引数との間の不一致。繰り返しますが、可能であればコンパイラを使用し、それ以外の場合は目を使用してください。

これらのいずれかが原因である確率は 5 対 1 です。

于 2009-08-26T11:17:49.583 に答える