主题:程序运行出现奇怪问题
acely624
[专家分:50] 发布于 2010-07-26 21:35:00
本人使用cvf6.6版fortran console application做工程实现了一个循环次数较大的程序,但运行没有达到最大循环次数就结束了,且运行前后均未提示有任何问题及警告。
因程序较大,本人不方便帖出来。在此问下,有没可能是版本及工程问题?
回复列表 (共35个回复)
沙发
tianhy2010 [专家分:60] 发布于 2010-07-29 07:57:00
内存问题吧
板凳
yeg001 [专家分:14390] 发布于 2010-07-29 09:28:00
你最好调试一下是哪里退出. 一般异常退出会有提示的, 正常退出是遇到stop或者到程序的最后.
3 楼
acely624 [专家分:50] 发布于 2010-07-29 09:35:00
1楼的,如何判断是否为内存问题,如果是内存问题该如何处理
4 楼
cgl_lgs [专家分:21040] 发布于 2010-07-29 13:35:00
如果调用了库函数,是很有可能退出不暂停的。
5 楼
acely624 [专家分:50] 发布于 2010-08-01 09:22:00
程序里有大量的数学函数,如是数学函数的问题,该怎么解决?
谢谢,还望不吝赐教。
6 楼
yeg001 [专家分:14390] 发布于 2010-08-01 12:14:00
一个品质优良的函数库会尽量在出错的时候给出一些提示. 如果你用的函数是内部函数, 那也应该有提示的.
7 楼
acely624 [专家分:50] 发布于 2010-08-01 14:51:00
问题还未解决,在线等。。。。
感谢各位的热情参与!
8 楼
yeg001 [专家分:14390] 发布于 2010-08-01 17:38:00
你这样等也是没人可以帮你解决的. 但凭你说帖出来的现象无法确定是什么问题.
既然要跟代码打交道, 调试一下找原因是必须的.
9 楼
acely624 [专家分:50] 发布于 2010-08-02 15:26:00
调试结果表明:
问题出现在下面这一段上
DR=4D0*R
LLF=DINT((X0(I)-DR)/C)
LRG=DINT((X0(I)+DR)/C)
LFR=DINT((Y0(I)-DR)/C)
LBA=DINT((Y0(I)+DR)/C)
IF(LBA.GE.IDY) LBA=IDY-1
IF(LRG.GE.IDX) LRG=IDX-1
IF(LFR.LT.0) LFR=0
IF(LLF.LT.0) LLF=0
DO LX=LLF,LRG
DO LY=LFR,LBA
IB=LY*IDX+LX+1
J=NCL(IB)
IF(J.LE.0) CYCLE
IF(I.LE.J) CYCLE
ALLOCATE(CTP)
CTP%LPP=J
CTP%NEXTP=>LCP(I)%ENDP
LCP(I)%ENDP=>CTP
END DO
END DO
10 楼
tianhy2010 [专家分:60] 发布于 2010-08-02 18:30:00
你把错误提示贴出来更好了
我来回复