回 帖 发 新 帖 刷新版面

主题:关于数组最大长度的问题

[size=4]    大家好,今天好不容易把输入参数搞好,结果运行的时候出现了数组边界溢出的问题,
(Program Exception - array bounds exceeded),我按Ctrl+F10一行一行的运行,到第1001个数组元素的时候提示我最大长度是1000。我模型数组长度挺长的。请问能不能更改数组允许的最大长度?最大长度和什么参数有关系?如何改?谢谢[/size][em18]

回复列表 (共14个回复)

11 楼

那个1000nodes是编译器告诉我的 但我不会贴图,就手打出来了

12 楼

你之前那个程序用dimension声明数组大小按理是要放在定义区, 而read是执行区. 我也奇怪是用什么编译器编译通过的?
后面这段代码用动态数组应该就可以了.

13 楼

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 楼

Program Exception - array bounds exceeded

这是运行时错误,是数组越界

 Array expansion limited to 1000 nodes

这是调试器只能看到数组的前 1000 个数据。给出的一个提示。
要查看后面的数据,请自己设定一个watch 变量,输入 DP1(1000:2000) 可以看1000到2000个元素。
这只是一个调试器的功能限制的提示,并不说明你的程序和代码有问题。

我来回复

您尚未登录,请登录后再回复。点此登录或注册