回 帖 发 新 帖 刷新版面

主题:数组越界检查

定义了参数Mmax=100
一个子程序中有一个形参fun(8,1:Mmax),在计算一个本地变量时有这样的式子:
        i = Mmax
        forall(j = 1:2)
            migra(i,j) = ...*( -IAP*fun(i,j)/KAPPA - &
                                                 ^^^此处
                        (fun(j,i) + fun(j,i-1))*(fun(3,i) - fun(3,i-1)) )
        end forall
明显地,上面第三行fun(i,j)应为fun(j,i),但奇怪的是ifort即使加了-check all也检查不出来。请问可能是什么原因?如何让编译器能检查出这样的错误?

回复列表 (共3个回复)

沙发

这不是语法错误···编译器不会查出来吧···

板凳


可以了,这是一个运行时错误

3 楼

IFort检查不完全,仅在访问超过总空间时会检查出来,还有就是声名方式不同检查方式也不同。
楼主可以用gfortran检查检查:)

我来回复

您尚未登录,请登录后再回复。点此登录或注册