主题:stack overflow这样的错误原因可能是什么?
xiaoyuan24
[专家分:100] 发布于 2012-03-10 07:32:00
如题,我已将错误截图附上,请问这样的错误很可能是由于什么原因引起的?谢谢!!
最后更新于:2012-03-10 07:33:00
回复列表 (共8个回复)
沙发
eastwind2000 [专家分:10] 发布于 2012-03-10 11:42:00
首先查数组是否越界,其次可能是占用内存过多需要在link设置较大的内存比如512000000,在IVF+VS 里面,stack有时候是0, 手工改一下就好了。
绝大多数的情况都是上面2种。
板凳
xiaoyuan24 [专家分:100] 发布于 2012-03-11 16:23:00
那请问第二种原因应该如何修改?
3 楼
xiaoyuan24 [专家分:100] 发布于 2012-03-12 15:16:00
我用的fortran是microsoft visual studio的intel fortran。不知道如何设置,请赐教!而且我的程序编译通过,没有错误。但是就是出现上述的over flow。关键是我不知道哪里over flow,如果知道我应该知道怎么改。有什么方法可以追踪这个错误么?
4 楼
alsoran [专家分:760] 发布于 2012-03-16 14:43:00
该栈空间大小:项目\属性\linker\system---->stack reserve 改大一点
5000000 ,这个是5MB
或者编译选项用heap arrays,具体在: 项目\属性\Fortran\optimization---->Heap Arrays 设置为 0
5 楼
xiaoyuan24 [专家分:100] 发布于 2012-03-19 10:15:00
谢谢你的回复!!不过我已经找到错误了,是因为在主程序里定义的parameter,然后call subroutine时传入subroutine里就变成了变量,subroutine不再将它视为parameter了,然后定义矩阵时就会出错。只有在主程序里它还被视作parameter。
6 楼
smile2014 [专家分:0] 发布于 2013-08-04 10:33:00
请问,在主程序定义为parameter,调用子程序时,把它看做是变量,这样要怎么解决呢?还是不要写成子程序形式?谢谢!
7 楼
xiaoyuan24 [专家分:100] 发布于 2013-09-13 16:15:00
哥们儿,我不上论坛好多年,这个是去年我发的问题。记忆中好像在子程序里面再定义一次
8 楼
hktk_12 [专家分:0] 发布于 2015-01-25 16:24:59
最近我的程序出现了该问题,按照4楼的方法解决了,感谢4楼!!
我来回复