主题:关于数组最大长度的问题
whero_2000
[专家分:0] 发布于 2010-12-17 17:31:00
[size=4] 大家好,今天好不容易把输入参数搞好,结果运行的时候出现了数组边界溢出的问题,
(Program Exception - array bounds exceeded),我按Ctrl+F10一行一行的运行,到第1001个数组元素的时候提示我最大长度是1000。我模型数组长度挺长的。请问能不能更改数组允许的最大长度?最大长度和什么参数有关系?如何改?谢谢[/size][em18]
最后更新于:2010-12-17 17:35:00
回复列表 (共14个回复)
11 楼
whero_2000 [专家分:0] 发布于 2010-12-19 13:42:00
那个1000nodes是编译器告诉我的 但我不会贴图,就手打出来了
12 楼
yeg001 [专家分:14390] 发布于 2010-12-19 14:06:00
你之前那个程序用dimension声明数组大小按理是要放在定义区, 而read是执行区. 我也奇怪是用什么编译器编译通过的?
后面这段代码用动态数组应该就可以了.
13 楼
whero_2000 [专家分:0] 发布于 2010-12-19 14:42:00
CVF6.6,我以前编写的振动薄板模态程序就是按照这个格式写的,也得出来的结果,但是节点很少,肯能没暴露问题。请各位老师帮我把代码的顺序调下可以么?我没遇到这样的问题,比较陌生(刚才我看了下,程序是有问题的,只要维数超过1000的数组都出现问题)。
下面是子程序INPUT
SUBROUTINE INPUT(IELEM,VMATI,VCOOD,VGRID,DS,VS,AS,V,P)
IMPLICIT REAL*8(A-H,O-Z),INTEGER(I-N)
COMMON/COM1/MND,NUMEL,NUMPT,NF
COMMON/COM2/MND2,NUMPT2,N
COMMON/COM3/GRAV,NPC
COMMON/STUC/H,DENS,RAD,APM
COMMON/ELEM/NODE,INTX,INTY,NFIX
COMMON/DYN/OMEGA,TT,DT,ALPHA,DELTA,GAMA
DIMENSION IELEM(NUMEL,3+MND),VMATI(3),VCOOD(NUMPT,2),
$IFIXD(NFIX,NF+1),VFIXD(NFIX,NF),ILOAD(NPC,NF+1),VLOAD(NPC,NF)
DIMENSION V(NUMPT2),P(NUMPT),VGRID(NUMPT2)
DIMENSION DS(N+1),VS(N+1),AS(N+1)
DO I=1,NUMEL
READ(5,2)(IELEM(I,J),J=1,3+MND)
2 FORMAT(7I4)
ENDDO
READ(5,3)(VMATI(I),I=1,3)
3 FORMAT(3F15.7)
C VMATI(1)-材料密度
C VMATI(2)-材料杨氏模量
C VMATI(3)-材料动力粘度
DO I=1,NUMPT
READ(5,4)(VCOOD(I,J),J=1,2)
4 FORMAT(2F15.7)
ENDDO
DO I=1,NUMPT2
VGRID(I)=0.0
ENDDO
DO I=1,N+1
DS(I)=0.0
VS(I)=0.0
AS(I)=0.0
ENDDO
DO I=1,NUMPT2
V(I)=0.0
ENDDO
DO I=1,NUMPT
P(I)=0.0
ENDDO
RETURN
END
14 楼
臭石头雪球 [专家分:23030] 发布于 2010-12-19 18:33:00
Program Exception - array bounds exceeded
这是运行时错误,是数组越界
Array expansion limited to 1000 nodes
这是调试器只能看到数组的前 1000 个数据。给出的一个提示。
要查看后面的数据,请自己设定一个watch 变量,输入 DP1(1000:2000) 可以看1000到2000个元素。
这只是一个调试器的功能限制的提示,并不说明你的程序和代码有问题。
我来回复