我的ALLOCATE中有什么导致整数溢出?

时间:2015-05-14 15:17:24

标签: fortran allocation gfortran integer-overflow

我有一组代码,我在其中声明了所有变量的大小。但是,我想更改它们,因此一些变量是可分配的。

这是(我相信)是原始的相关代码。

import os
(_, _, my_files) = os.walk("C:\\Users\\guest.user\\task2").next()
amount = len([f for f in my_files if f.endswith('.txt')])

print amount

if amount > 20:
#This is my next problem - needs to truncate the file once there is more than 20

这是我想要的形式。

parameter (m=10**5,nchar=2000,ncols=110)
character (LEN=*), PARAMETER :: FORM = "(A)"
character(LEN=nchar),DIMENSION(m) :: data

* determine the length of the data
nlines = 0
do i = 1,m
   read(12,*,end=10)
   nlines = nlines+1
end do
nlines = nlines+1

* read in the data
10  REWIND(unit = 12)
do i = 1,nlines
   read(12,FORM) data(i)
end do

问题是,这会导致整数溢出错误。 " Fortran运行时错误:计算要分配的内存量时整数溢出"。我发现这非常令人困惑,因为“  nlines'和' j'我从测试数据集中获得的值分别只有10和110。

我发现如果我没有分配字符长度(即保持不变),这就行了。

我正在使用gfortran,版本4.8.0。

我的代码/方法有什么问题?

0 个答案:

没有答案