モジュールとメイン プログラムの間で配列を転送する際に問題が発生しています。モジュールとメイン プログラムは、gfortranを使用して完全に正常にコンパイルされます。ただし、.exe ファイル ウィンドウを実行すると問題が発生し、ウィンドウを閉じる必要があります。これは、配列のサイズが不明な場合 (およびそのサイズを割り当てる必要がある場合) にのみ発生するようです。問題を説明するコードの小さなセクションを含めました。
仕組み: ユーザーは、正方行列のサイズを定義する整数 'i' を求められます。この整数はモジュール関数に渡され、行列が作成されてメイン プログラムに返されます。次に、マトリックスが画面に出力されます。
1 つのファイル内のメイン プログラム:
program main1
use module1
implicit none
integer :: i
real,allocatable :: a(:,:)
write(*,*)'Input the size of the square matrix'
read(*,*)i
allocate(a(i,i))
a = function1(i)
write(*,*) 'The square matrix a='
write(*,*) a
deallocate(a)
end program main1
および別のファイル内のモジュール:
module module1
contains
function function1(i)
real, allocatable,dimension(:,:) :: function1
integer :: i
allocate(function1(i,i))
function1 = 1.0
deallocate(function1)
end function function1
end module
助けてくれてありがとう!