24小时热门版块排行榜    

查看: 2412  |  回复: 9
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

jhuiuc

至尊木虫 (正式写手)

[交流] 【求助】Fortran里面Stack Overflow【已完成】

Visual Fortran, 程序里面定义了一个整型数组 JS(N), 所有A-H, O-Z参数和数组定义为Real*8类型. 这个数组在Call语句被用到, Call Sub1(A, B, JS).

当N取352以下时, 程序完全正常, 再大就会出现severe 170 -Stack Overflow 的错误信息(Debug时指向这个JS(N)数组).
severe(170): Program Exception - stack overflow
FOR$IOS_PGM_STKOVF. The Compaq Fortran RTL has detected a stack overflow while executing your program. See your Release Notes for information on how to increase stack size.

1. 如何查这个Release Notes?
2. 如何增加Stack Size?
3. 欢迎其他任何相关评论. 如果需要我补充其它信息, 请指出.

程序大概结构是(本身没有任何语言问题, 就是修改N值的时候会出现Overflow现象):
Program Main
Implicit real*8 (A-H, O-Z)
Parameter (N=300)
Integer JS(N)
Real*8 A1(N, N), B1(N,N),X1(N)
......
......
CALL Sub1(A1,B1,N,X1,LL,JS) (A1,B1是2维数组, X1是1维数组, LL是整型数)
......
......
END

SUBROUTINE Sub1(A1,B1,N,X1,LL,JS)
......
......
Return
End

[ Last edited by wangen994 on 2010-1-18 at 12:05 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
余泽成(金币+2,VIP+0):辛苦了! 1-16 23:13
jhuiuc(金币+88,VIP+0):可否解释一下增加Stack Size对程序会产生什么影响, 比如运行速度降低? 1-16 10:17
引用回帖:
Originally posted by jhuiuc at 2010-1-16 16:25:
Visual Fortran, 程序里面定义了一个整型数组 JS(N), 所有A-H, O-Z参数和数组定义为Real*8类型. 这个数组在Call语句被用到, Call Sub1(A, B, JS).

当N取352以下时, 程序完全正常, 再大就会出现severe 170 -Sta ...

这样修改:stack size
是我从我们群里截的图。答案是某个大侠给出来的。可以参考一下。

[ Last edited by maomao1210 on 2010-1-16 at 19:41 ]
4楼2010-01-16 16:58:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

magic7004

金虫 (职业作家)

★ ★ ★ ★ ★ ★ ★
余泽成(金币+2,VIP+0):辛苦了! 1-16 16:40
jhuiuc(金币+5,VIP+0):我刚刚修改了原帖,可否给出一些具体意见,另外到底什么是Stack和heap? 谢谢 1-15 20:46
一般默认的stack size是足够的,通常stack overflow 都是某些bug或者很恶劣的算法导致的。
建议搂住修改一下代码,减小stack的使用。比如避免递归调用,避免把很大的结构放在stack里等。建议搂住把大的结构或者数组放在heap里,把递归改成循环。

ps:stack的大小通常是通过调整编译器的参数修改的,这个去找编译器的文档吧。
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
2楼2010-01-16 16:38:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
jhuiuc(金币+10,VIP+0):有可能是在调用子程序Sub1的时候,里面参数都是很大数组, 导致Stack Overflow, 可否解释到底什么是Stack和Heap 1-15 20:51
jhuiuc(金币+5,VIP+0): 1-15 20:52
jhuiuc(金币+10,VIP+0):虽然我写过很多Fortran,但还不知道什么是Heap,能给个例句吗?C语言的也可以 1-16 19:09
貌似楼主有两个N X N维的数组,如果这个是放在stack里的话,那就是非常大的了。
我不清楚FORTRAN的语法,不知道楼主声明数组的方式是不是会把数组放在stack里。
如果是放在stack里的话,建议搂住把数组放到Heap里。

ps:stack就是堆栈,Heap就是堆。每个线程都有自己的stack用来保存局部变量和函数调用信息,根据编译器不同,通常大小1~4MB之间,如果用完了就会出现stack overflow exception。
如果楼主不清楚的话,建议看一下Fortran语法关于内存管理的部分,非常大的数组应该是动态管理的,放在heap里。。

[ Last edited by magic7004 on 2010-1-16 at 16:50 ]
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
3楼2010-01-16 16:47:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hakekill

木虫 (小有名气)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
余泽成(金币+1,VIP+0):谢谢参与应助! 1-16 23:13
jhuiuc(金币+10,VIP+0):谢谢讨论! 1-16 10:15
这个问题好像有人问过了,我还是推荐使用动态分配数组来做,省心省事
5楼2010-01-16 21:45:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 投票:  有多少人是今天查系统知道结果的? +17 爱看书的可乐 2026-08-26 19/950 2026-08-31 21:30 by xiangy672
[基金申请] 基金未中,这种答复是模板吗? +6 zhaosm1982 2026-08-27 7/350 2026-08-31 21:18 by qdxxmc
[基金申请] 哪位高人中了,把查询到的截图贴出来让我看看,让我长长见识 +6 yuleib84 2026-08-26 7/350 2026-08-31 19:46 by 鱼翔浅底1
[基金申请] 能否申诉? +7 echo8914667 2026-08-30 8/400 2026-08-31 17:00 by yihongxu
[文学芳草园] 梦想 +5 myrtle 2026-08-26 5/250 2026-08-31 14:40 by hahaboy
[基金申请] 国社科又开始会评了,不知道这次命运如何 +6 雨打竹帘 2026-08-30 10/500 2026-08-31 09:29 by huixian257
[基金申请] 基金不中,共勉 +12 eulota 2026-08-26 12/600 2026-08-31 08:42 by ZJTJZ
[基金申请] 麻烦专家们看看评委们的意见(F口面上) +6 gdd2018 2026-08-28 11/550 2026-08-30 08:58 by 超级无敌华子
[基金申请] 我就是申请一个面上项目而已,这评审意见是按照杰青的条件评的吧? +6 gouxfjh 2026-08-28 11/550 2026-08-30 07:57 by gouxfjh
[基金申请] 国自然面上复盘~欢迎讨论 (金币+15) +15 晴天加油 2026-08-26 16/800 2026-08-29 18:28 by symmetry
[基金申请] 2026年叶企孙基金 +4 bud_bud 2026-08-27 7/350 2026-08-29 07:23 by foolishmani
[基金申请] 基金系统什么内容也没有 30+4 winsaint 2026-08-27 9/450 2026-08-28 11:06 by maolC
[基金申请] 面上合作单位盖章 +5 ssyjh 2026-08-27 5/250 2026-08-27 20:50 by gdfollow
[基金申请] 看板上这么多中的,有点像50人群里49个人都是骗子的那种感觉…… +5 a089 2026-08-26 6/300 2026-08-27 14:05 by jonewore
[基金申请] 2026年8月25日国自然放榜前突然收到列入评审专家邮件,有关系吗? +25 木水思豆 2026-08-25 28/1400 2026-08-26 14:53 by draco1987
[基金申请] 为什么国自然不能直接公布 +4 bjdxyxy 2026-08-26 4/200 2026-08-26 13:12 by qingmu1201
[基金申请] 国合里面能看到了 +7 一怀馨秋 2026-08-26 7/350 2026-08-26 11:23 by zhaosm1982
[基金申请] 国际合作可查了,中了面上 (EPI+1)(金币+50) +18 Ldrop2023 2026-08-26 18/900 2026-08-26 11:15 by cmrandy
[基金申请] 系统进不去 +4 yanglien 2026-08-26 5/250 2026-08-26 11:10 by wenfengw83
[基金申请] 牛来!米来!面来! +8 beefly 2026-08-26 8/400 2026-08-26 08:37 by xuzhipiao
信息提示
请填处理意见