fortran错误,forrt1: server : program Exception - stack overflow

调试Fortran程序,出现错误:forrt1: server <170>: program Exception -stack overflow

如图:

fortran错误,forrt1: server : program Exception - stack overflow_第1张图片

原因:堆栈空间不足,溢出。分配的数组空间太大时可能出现的错误。

一种解决方法是使用动态数组。先定义动态数组,再分配空间,然后使用数组,最后释放空间。

示例:主程序中调用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

      enddo

     return

     end

     subroutine cacarray2(narray,nd)

     dimension narray(nd)

     integer,allocatable ::narray2(:)

     allocate(narray2(nd))

     do k=1,10

         narray(k) = k

         narray2(k)= k

     enddo

     deallocate(narray2)

     return

     end


你可能感兴趣的:(Fortran)