- 积分
- 11
- 注册时间
- 2002-9-11
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2003-11-15 09:22:50
|
显示全部楼层
来自 北京
回复: 【求助】Fortran数组几个疑问!
yexm wrote:
今天在程序的调试中发现了几个现象,想和大家探讨一下。
fortran 为 cvf6.6
一、
定义两数组: A(5340),B(5340,50)
调试时如下语句通不过。
read(1,*)(A(I),B(I, : ),I=1,5340)
提示:(NTDLL.DLL) : 0xC0000005: Access Violation.
改为如下语句就可以通过。
do I=1,5430
read(1,*)A(I),B(I,: )
end do
是不是因为数组太大的缘故?(程序里面还很多组这样大的数组)。
二、
subroutine F1()
real *8, pointer, dimension( : ) :: A
给A数组分配空间
.....
end
subroutine F2(A)
real *8, pointer, dimension( : ) :: A
对数组A操作
......
end
对于如上的两个子函数,如果A数组定义比较大时,调试通不过。
提示: 0xC000008C: Array Bounds Exceeded.
在debug中发现在函数F2中A没有分配空间。也就是F1中的A没有传给F2。
并非A数组超过的边界。
如果A数组定义比较小的话就没有这个问题。是不是也是因为A数组太大而无法在子函数间传递?如果真是这样的话,该如何解决呢?
请版主及各位高手指点!
谢谢!
第一个问题:第一个问题,READ语句的第一种写法,要求被读的量一次性提供,第二种写法读了5000多次,这是区别 |
|