Я застрял с проблемой повреждения кучи в Visual Studio 2008 с Intel Fortran Compiler 11. Я работаю над 64-разрядной версией Windows 7.
Это вызов подпрограммы (F77) lapack в моей программе F90:
call dgetrs('N', nbParams, one, a, nbParams, ipv, x, nbParams, err)
Перед этим вызовом отладчик показывает ожидаемые значения для всех параметров. a и x обозначают две «размещаемые» переменные с размерами (nbParams, nbParams) и (nbParams) соответственно.
Однако после запуска этой строки выполнение останавливается с местоположением чтения нарушения доступа 0x0000000000000001. Поскольку я скомпилировал lapack в режиме отладки, я могу войти в вызов, и я вижу, что все, кроме «TRANS», повреждено только в первом утверждении DGETRS.
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!**
Я перепробовал все и не могу найти проблему. Может ли кто-нибудь помочь мне найти проблему?
Спасибо за вашу помощь!