Fortran 调用子例程时堆栈溢出
当我调用代码中的子例程时,我收到消息堆栈溢出。 注意:程序完全工作,没有任何消息。几天后,当我再次运行它时,它突然启动Fortran 调用子例程时堆栈溢出,fortran,Fortran,当我调用代码中的子例程时,我收到消息堆栈溢出。 注意:程序完全工作,没有任何消息。几天后,当我再次运行它时,它突然启动 do i=1,npop do j=1,nvar call random_number(r1) call random_number(r2) poptemp(i,j)=poptemp(i,j)+bheta*r1*(pop(i,j)-poptemp(i,j))+ &
do i=1,npop
do j=1,nvar
call random_number(r1)
call random_number(r2)
poptemp(i,j)=poptemp(i,j)+bheta*r1*(pop(i,j)-poptemp(i,j))+ &
bheta*r2*(pbest(j)-poptemp(i,j))
Pk(j)=poptemp(i,j)
end do
call RSM(Pk,varmin,varmax,obj,lda,x,y,z,mi,sigma2,Rinv,cvg)
objcont=objcont+1
ftemp(i)=obj
end do
Call RSM(..)语句向我提供了错误消息。
forrtl:严重(170):程序异常-堆栈溢出
Image PC Routine Line Source
RSM_25.exe 00CC6947 Unknown Unknown Unknown
RSM_25.exe 00CC3A8D _MAIN__ 129 RSM_teste25.f90
RSM_25.exe 00CC8412 Unknown Unknown Unknown
RSM_25.exe 00CC6DDF Unknown Unknown Unknown
RSM_25.exe 00CC6C0F Unknown Unknown Unknown
KERNEL32.DLL 75E56359 Unknown Unknown Unknown
ntdll.dll 77947B74 Unknown Unknown Unknown
ntdll.dll 77947B44 Unknown Unknown Unknown
很抱歉,这里提供的信息完全无法判断出哪里出了问题。请提供一个简短但完整的程序来说明问题,并告诉我们您是如何编译的。您的程序可能没有问题,只是没有足够的堆栈空间。查看这篇文章:检查RSM的签名-您是否按正确的顺序获得了参数,并且所有参数都是预期类型的参数?如果Dan Sp.是正确的,一个快速简单的解决方法可能是使用
/heap arrays:XYZ
强制编译器在堆上而不是堆栈上分配大于XYZ kiB的数组。