b********e 发帖数: 109 | 1 我在Fortran PowerStation 4 下使用一个程序,发现不能debug,可以设置断点,但是程
序并不停。于是考虑移植到Visaul Fortran 6.6下,发现可以调试,也可以编译通过,但
是执行是却遇到stack overflow的问题,后来发现是一个子程序的数组定义有问题,但是
在Powerstation4 下却可以执行。那个子程序数组定义如下:
SUBROUTINE GHMAT7(NE,CONE,TUINV,TDLDA)
COMPLEX TUINV(NROWS,NROWS),TDLDA(NROWS)
INTEGER CONE(NE,4),VB_ID
COMMON N,NP,INP,IPR,ITX
COMMON /GEOMET/NROWS,NCOLM
结果发现程序运行到第一行和第二行是均发现溢出,为什么Powerstation中可以通过运
行呢?
BTW, NROWS值为600。 | g********e 发帖数: 106 | 2 VF可以调stack容量的吧.
【在 b********e 的大作中提到】 : 我在Fortran PowerStation 4 下使用一个程序,发现不能debug,可以设置断点,但是程 : 序并不停。于是考虑移植到Visaul Fortran 6.6下,发现可以调试,也可以编译通过,但 : 是执行是却遇到stack overflow的问题,后来发现是一个子程序的数组定义有问题,但是 : 在Powerstation4 下却可以执行。那个子程序数组定义如下: : SUBROUTINE GHMAT7(NE,CONE,TUINV,TDLDA) : COMPLEX TUINV(NROWS,NROWS),TDLDA(NROWS) : INTEGER CONE(NE,4),VB_ID : COMMON N,NP,INP,IPR,ITX : COMMON /GEOMET/NROWS,NCOLM : 结果发现程序运行到第一行和第二行是均发现溢出,为什么Powerstation中可以通过运
| g********e 发帖数: 106 | 3 FPS4老爷车据说在win98下是可以debug的.欧没试过.
VF6.5下Project->settings->link->output
将stack allocations reserve改大点.别超过机器
内存就是了.6.6也差不多吧
【在 g********e 的大作中提到】 : VF可以调stack容量的吧.
| i****d 发帖数: 255 | 4 Depending on the compiler, the definition of an array like
COMPLEX TUINV(NROWS,NROWS),TDLDA(NROWS)
with NROWS passed by COMMON, is problematic. Just think
of what happens if NROWS is modified in your subroutine.
Add NROWS to the arguments of the subroutine.
程
但
是
运
【在 b********e 的大作中提到】 : 我在Fortran PowerStation 4 下使用一个程序,发现不能debug,可以设置断点,但是程 : 序并不停。于是考虑移植到Visaul Fortran 6.6下,发现可以调试,也可以编译通过,但 : 是执行是却遇到stack overflow的问题,后来发现是一个子程序的数组定义有问题,但是 : 在Powerstation4 下却可以执行。那个子程序数组定义如下: : SUBROUTINE GHMAT7(NE,CONE,TUINV,TDLDA) : COMPLEX TUINV(NROWS,NROWS),TDLDA(NROWS) : INTEGER CONE(NE,4),VB_ID : COMMON N,NP,INP,IPR,ITX : COMMON /GEOMET/NROWS,NCOLM : 结果发现程序运行到第一行和第二行是均发现溢出,为什么Powerstation中可以通过运
|
|