0
我在一個相當簡單的代碼中有一個簡單的問題,但是我真的沒有在幾個小時後發現錯誤。這裏的代碼,發生問題的最小化版本:Fortran 95:數組函數返回。越界
SUBROUTINE Partial_KlassRKV(x,y,f,f_xMarge,f_yMarge)
USE DGL_Functions
IMPLICIT NONE
REAL :: x(:),y(:),f(:,:,:),f_xMarge(:,:),f_yMarge(:,:)
INTEGER :: i,j,k
REAL :: partial_fx(6,6)
DO k=1,size(f,3)
partial_fx=PartialCalc(x,y,f(:,:,k),f_xMarge,f_yMarge)
WRITE(*,*) 'Nach PartialCalc x'
STOP
END DO
...
MODULE DGL_Functions
CONTAINS
FUNCTION PartialCalc(x,y,f,f_xMarge,f_yMarge)
IMPLICIT NONE
REAL :: x(:),y(:),f(:,:),f_xMarge(:,:),f_yMarge(:,:)
REAL :: PartialCalc(6,6)
INTEGER :: i,j
DO i=1,size(PartialCalc,1)
DO j=1,size(PartialCalc,2)
PartialCalc(i,j)=i+j
END DO
END DO
WRITE(*,*) 'PartialCalc ',PartialCalc
END FUNCTION PartialCalc
它返回上次寫入聲明FUNCION PartialCalc但不是在寫操作之後
partial_fx=PartialCalc(x,y,f(:,:,k),f_xMarge,f_yMarge)
在子程序
。在那一行有「數組下標越界」。我不明白這一點。這兩個數組(partial_fx和PartialCalc)都使用dim(6,6)聲明,併爲每個PartialCalc(i,j)分配一個值...?
電賀intasys
PS:我是用柏拉圖的f95與切克馬特32
謝謝。更改調試器以贏得32調試解決了問題。以防萬一任何人有類似的問題。 – intasys 2014-09-22 16:18:34