本帖最后由 terrytr 于 2014-6-19 12:24 编辑
各位下午好。 这两天在使用国外大神发出的代码时,发现一个问题。先说一句,这个程序是公开的,应该不会是代码本身的问题。 这个程序是读取外部txt文件,根据读入参数个数来动态给定数组的大。在以前的使用过程中,由于参数个数不多,程序没有任何问题。 但这两天在读入参数较多时,就出现数组开不了的情况,即,语句allocate(a(),b(),..stat=num),这里的单精度浮点数数组a,b,..有很多,一维,二维的都有。 当数组开得过大时,就出现了后面的num不为0.(为0才是分布了内存)。 比如,卡在abc(14112,14112)这个数组,报错。这个浮点数数组大小在756MB吧。电脑32位win8.1,内存2G,VS2008+IVF-IA32。 不知道说清楚没有,大家给出出主意吧。很急!
==================================
刚刚换平台了。这回是8G内存,但是VS2010和IVF2011都是32位的。也出现上述错误。原因在于要开至少6个756MB的数组。请问大家,除了换64位的VS2010外,还有其他解决办法么?
我实在是想不到了。如果还不信,准备到Linux平台试下。
==================================
最近小弟尝试了两种方式:
(1)由于VS2010没有64位版本,安装了32位的VS2010和可支持32位和64位的IVF编译器。在编译的时候,选择IVF编译器平台为X64。这样,比之前仅仅停留在数据读入后,分配内存时挂掉稍好点。这次是数据读入、分配内存,没问题。但是在后面开数组运算时,还是出现了无法动态分配内存而失败的情况。
(2)在linux平台下,采用gfortran编译器,出现的问题和之前一样,在数据读入后,分配内存即出错。
上述两种情况都是电脑内存只用了2G 左右(任务管理器显示),但是有几次运行时,电脑报出了黄色感叹号--内存不足。不知道为什么。此为问题1.
问题2:在linux平台下,用C++语言时,可以开数组直到内存耗空,但是Fortran为什么开不了?小弟诚心请教大家。谢谢了!
|