WindowsのgfortranでSegmentation faultのエラーが出たら,少し待とう
今でも理数分野ではバリバリ使われているFortran.いざプログラムを実行しようとしたら,次のようなエラーが出てくることがあります.
Program received signal SIGSEGV:Segmentation fault - invalid memory reference
文法上は問題がないけれども,問題のあるプログラムであるときに発生するエラーSegmentation fault.どこがおかしいのかなあ,なんてプログラムを見直す前に,ちょっと立ち止まってみてください.落とし穴が待っているかもしれません.
実はこのエラー,プログラム自体には何の問題がなくても発生することがあります.
gfortranをインストールする際に,TDM-GCCを使った,というならば大当たりです.実は,TDM-GCCのgfortran(バージョン5.1)には不具合があり,openやwriteをすると
Program received signal SIGSEGV:Segmentation fault - invalid memory reference
が出てしまうという問題があります.その場合は,あきらめて違うgfortranをインストールしましょう.
現在も更新がされていて,Windows上に簡単にインストールできるのは,MinGW-w64だと思います.
MinGW-w64 – for 32 and 64 bit Windows
https://sourceforge.net/projects/mingw-w64/
上のページにアクセスし,「Download」を押して最新版のインストーラをダンロードしてインストールしてください.基本的には次へを押すだけです.途中で選択できる「Version」の項目は,なるべく一番数字の大きい最新バージョンにしておきましょう(2017年10月現在の最新版は7.2でした).
現時点では,MinGWはgfortranのあるディレクトリをPATHに追加しないため,スタートメニュのリンクからコマンドプロンプトを起動しないと,gfortranは使えません.必要に応じて,PATHに追加してしまってもよいかもしれません.
さて,先ほどまでSegmentation faultが出たプログラムでしたが,あら不思議.何もプログラムを変えていないのにすんなり動くようになっていませんか?これを知らずにいつまでもプログラムの誤りを探していたらと思うと,ぞっとしますね.
え,それでも動かないって?その場合は頑張ってプログラムを直してください.配列のインデックスが範囲外とかになっていたりしませんか.
天才ですありがとうございました
ありがとうございます、助かりました。