调试Fortran程序,出现错误:forrt1: server <170>: program Exception -stack overflow
如图:
原因:堆栈空间不足,溢出。分配的数组空间太大时可能出现的错误。
一种解决方法是使用动态数组。先定义动态数组,再分配空间,然后使用数组,最后释放空间。
示例:主程序中调用cacarray1就会出错,而调用cacarray2就不会出现这样的错误,因该程序中使用动态数组。
program main
parameter(nd=800000)
dimension narray(nd)
call cacarray1(narray,nd)
c call cacarray2(narray,nd)
write(*,*) (narray(k),k=1,5)
end
subroutine cacarray1(narray,nd)
dimension narray(nd),narray2(nd)
do k=1,10
narray(k) = k