Intel Fortran Compiler 11 を使用した Visual Studio 2008 でヒープ破損の問題が発生しました。Windows 7 64 ビットで作業しています。
これは、私の F90 プログラムでの (F77) lapack サブルーチンの呼び出しです。
call dgetrs('N', nbParams, one, a, nbParams, ipv, x, nbParams, err)
この呼び出しの前に、デバッガーはすべてのパラメーターの期待値を表示します。a と x は、それぞれサイズが (nbParams,nbParams) と (nbParams) の 2 つの「割り当て可能な」変数を表します。
ただし、この行を実行した後、アクセス違反の読み取り位置 0x0000000000000001 で実行が停止します。lapack をデバッグ モードでコンパイルしたので、呼び出しの内部に入ることができます。DGETRS の最初のステートメントだけで、'TRANS' 以外のすべてが壊れていることがわかります。
SUBROUTINE DGETRS( TRANS, N, NRHS, A, LDA, IPIV, B, LDB, INFO )
...
CHARACTER TRANS
INTEGER INFO, LDA, LDB, N, NRHS
...
INTEGER IPIV( * )
DOUBLE PRECISION A( LDA, * ), B( LDB, * )
......
INFO = 0 **--> Now all input vars but TRANS are corrupted or dereferenced!**
私はすべてを試しましたが、問題を特定できません。問題を特定するのを手伝ってくれる人はいますか?
ご協力いただきありがとうございます!