以文本方式查看主题

-  Fortran中文网  (http://fortran.cn/bbs/index.asp)
--  Fortran语言使用经验交流  (http://fortran.cn/bbs/list.asp?boardid=2)
----  教各位大虾,我自己用fortun编制的程序当计算量太大时出现堆栈(heap)超出原因,计算终止如何解决?  (http://fortran.cn/bbs/dispbbs.asp?boardid=2&id=233)

--  作者:prssrp
--  发布时间:2006/6/12 21:02:21

--  教各位大虾,我自己用fortun编制的程序当计算量太大时出现堆栈(heap)超出原因,计算终止如何解决?
教各位大虾,我自己用fortun编制的程序当计算量太大时出现堆栈(heap)超出原因,计算终止如何解决?
--  作者:Evan
--  发布时间:2006/6/13 9:18:22

--  

是heap overflow而不是stack overflow?一般常见的是后者,主要因为代码中声明的静态变量较多造成的,可以通过加大stack size来解决:

前提:这里这针对CVF,IVF的设置方法应该类似。
选Project => Settings => Link => Category: Output =>
Stack allocations
Reserve: 这里填新值(默认为1M,若需要10M,则填10000000)

heap overflow,这个情况我还没遇到过,一般自己声明的动态数组都是存在heap中的,楼主可以检查一下动态数组的使用有没有问题:主要是分配和释放动态数组空间。


--  作者:lilin3888
--  发布时间:2006/6/13 18:54:45

--  
呵呵,ctr+c最实在!
--  作者:Evan
--  发布时间:2006/6/13 21:01:37

--  

呵呵


--  作者:prssrp
--  发布时间:2006/6/13 21:53:07

--  

谢谢大虾。是heap问题。如何分配和释放动态数组空间?我是用fortun90编制的,开始根据题目大小开了很多空数组,在计算过程中就出现了exceed heap问题


--  作者:prssrp
--  发布时间:2006/6/15 21:59:20

--  

提示错误是:heap space limit exceed


--  作者:prssrp
--  发布时间:2006/6/17 21:31:47

--  
怎么没有大虾来解决我的问题啊,我的问题真的很难吗?
--  作者:Evan
--  发布时间:2006/6/17 22:23:52

--  

severe (632): Heap space limit exceeded

FOR$IOS_F6700. The program ran out of heap space. The ALLOCATE statement and various internal functions allocate memory from the heap. This error will be generated when the last of the heap space is used up.

你可以在编译选项中加入:/heap:10000000,应该能够解决这个问题。


--  作者:prssrp
--  发布时间:2006/6/18 19:53:38

--  

我是用fortun90编制的的程序,在运行执行程序(。exe)时出现错误,我试着加大电脑的虚拟内存也不能解决,明天到办公室按楼上大虾的方法去试试,好像fortun90编译成执行程序时没有提示有选项


--  作者:Evan
--  发布时间:2006/6/18 20:00:12

--  

用DF命令编译程序,在编译选项中加入/heap:100000000。

关于DF的具体用法,这个版面里似乎有相关的教程吧。


京ICP备05056801号