• ベストアンサー

フォートランのエラーについて(forrtl)

こんにちは. Fortranのプログラムなのですが,Visial Fortranを使いましてビルドをしまして,実行したところ,計算の途中で,以下の表示がでました. forttl:severe(157) Program Exception-access violation 「何だろう?」と思いましてネットで検索をかけてみたら,以下のエラー一覧にぶち当たりました. http://www.xlsoft.com/jp/products/intel/cvf/docs/vf-html/em/em01_04.htm 「参照権限を持っていない仮想アドレスに書き込み,読み込みを行おうとした」との記述がありますが,「仮想アドレス」とはいったいどのようなものなのかよくわかりません.Fortranの入門書を紐解いてみたのですが,実際の文法のみで,アドレスについて知ることはできませんでした. お教えいただきたく,よろしくお願いいたします.

質問者が選んだベストアンサー

  • ベストアンサー
  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.3

こんにちは。  >オプションを設定して再コンパイルというのは,どうすればよいのでしょうか.また,それをすると何が明らかになるのでしょうか.  実際のコンパイラ製品の使い方に関しては、付属するマニュアルやヘルプを参照するのが一番良いと思います。  もし、手元に無いのであれば、下記のサイトを参照してみてください。   http://www.xlsoft.com/jp/products/intel/cvf/docs/vf-html/cvf_toc.htm   この、「4.1 コンパイラ・オプション」に意味が載っています。これは、お手持ちの製品のメーカーやバージョンと合致するとは限りませんので、確認してから利用してください。   「/check:bounds」は実行時に配列の添え字が宣言の範囲を超えたらエラーを出すようにするようです。   「/warn:argument_checking」関数やサブルーチンの呼び出し側と呼び出される側の引数の不一致を警告するようにするものです。 では。

asa_hikawa
質問者

お礼

ありがとうございました. このエラーが,境界外の配列要素を参照したことによるものであることがわかりました.早速,修正していきたいと思います. それでは,失礼いたします.

その他の回答 (2)

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.2

こんにちは。  検索されたエラー一覧の説明にある、「問題が領域外のメモリー参照かアドレスとして取り扱われるデータが引き起こす引数の不一致かを確認するために,/check:bounds と /warn:argument_checking オプションを設定して,再コンパイルしてください。」というのは、やってみましたか。  多くの場合、サブルーチンやファンクションの引数の整合が、呼び出し元と先で取れていない場合だと思います。 では。

asa_hikawa
質問者

補足

ありがとうございます. すみません. 「/check:bounds と /warn:argument_checking オプションを設定して,再コンパイルしてください。」というのがよくわかりませんでした. オプションを設定して再コンパイルというのは,どうすればよいのでしょうか.また,それをすると何が明らかになるのでしょうか. よろしくお願いいたします.

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

プログラムにバグがあります。 Visual Fortranがどのような拡張機能を持っているか知らないので、どう言ったバグかはわかりませんが。 ありがちなのは、配列の添え字オーバーとかでしょうか。 デバッグオプションを付けてコンパイルできればもうすこしわかりやすいエラーメッセージが出ると思います、

asa_hikawa
質問者

お礼

参考になるヒントをいただきまして,ありがとうございました. デバッグオプションなどは,当然なことですが,プログラミングの授業などで習うことではないので,頭の中にはありませんでした. 今後は,コンパイラの各種機能も,しっかりと把握していきたいと思います.

関連するQ&A

専門家に質問してみよう