找回密码
 注册
查看: 2343|回复: 8

请教高手:运行fortran出现的这个错误怎样改???急!!!

[复制链接]
发表于 2003-11-11 18:03:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
在运行时跳出一个对话框,显示:                                                  
"0x00404ff8"指令引用的"0x00703270"内存。该内存不能为“read".要终止程序,请      
单击"确定”。                                                                  
                                                                                
第一次碰到这样的错误,请高手指点一下,这样的错误该怎么改正。                    
                                                            
发表于 2003-11-11 19:11:13 | 显示全部楼层

请教高手:运行fortran出现的这个错误怎样改???急!!!

I never met such problem during running FORTRAN code, but several times when I run some other software. And it will be fine after I restart the PC.
So I think it maybe cause by the problem of the windows system. re-install the system to have a try.
发表于 2003-11-11 20:47:49 | 显示全部楼层

请教高手:运行fortran出现的这个错误怎样改???急!!!

也可能是你的程序中输出的数据太多,太大,以至于屏幕无法保存和记忆。
 楼主| 发表于 2003-11-12 09:44:45 | 显示全部楼层

请教高手:运行fortran出现的这个错误怎样改???急!!!

[这个贴子最后由leemelli在 2003/11/12 11:26am 第 2 次编辑]

应该是程序的问题。因为如果我将其中(加!!!号的)那几行的!!!去掉,程序
就不显示任何错误了。我把这个子程序贴上吧,请大家帮忙审查一下。本子程序中用到的模块都已经在主程序之前定义过了。
subroutine area!
  use array_node,only:nd
  use array_weight_func,only:nmn,innode
  use cotr_1,ony:ii,jj
  use array_K,only:gaussk1,btdb,k1
  use array_gauss,only:inco
  integer::i,j,mm,nn,m,n,im,in,imm,inn
!
  mm=0
  nn=0
  im=0
  in=0
  imm=0
  inn=0
    do 10 i=1,2*nmn
       do 20 j=1,2*nmn
gaussk1(jj,i,j)=inco(jj)*btdb(i,j)
20     continue
10  continue
!
    do 30 i=1,nd
       if(innode(ii,jj,i).NE.0) then
m=innode(ii,jj,i)
mm=mm+1
do 40 j=1,nd
              if(innode(ii,jj,j).NE.0) then
        n=innode(ii,jj,j)
        nn=nn+1
        im=2*m
              in=2*n
                imm=2*mm
        inn=2*nn
!!!        k1(im-1,in-1)=k1(im-1,in-1)+gaussk1(jj,imm-1,inn-1)
!!!        k1(im-1,in)=k1(2*m-1,2*n)+gaussk1(jj,2*mm-1,2*nn)
!!!        k1(im,in-1)=k1(2*m,2*n-1)+gaussk1(jj,2*mm,2*nn-1)
!!!        k1(im,in)=k1(im,in)+gaussk1(jj,imm,inn)
    end if
40continue
       end if
30  continue
       endsubroutine area
※※※:通过调试我发现是错误出在gaussk1(jj,imm,inn)上,好像在!!!语句中不让我引用这个数组元素。
 楼主| 发表于 2003-11-12 11:15:47 | 显示全部楼层

请教高手:运行fortran出现的这个错误怎样改???急!!!

[这个贴子最后由leemelli在 2003/11/12 11:20am 第 1 次编辑]

从根本上说是为了能实现下面这样的功能:,不知大家谁可以帮我一下,多谢了,先。
例如:将矩阵:a11 a12 a15         变换到矩阵: a11 a12 0  0 a15
              a21 a22 a25                      a21 a22 0  0 a25
              a51 a52 a55                       0   0  0  0  0
                                                0   0  0  0  0
                                               a51 a52 0  0  a55
当然行数和列数是不确定的【如:第一个矩阵是m*m的,第二个是n*n的】,并且第一个矩阵中元素的标号存放在一个数组中,是已知的。
发表于 2003-11-12 15:11:30 | 显示全部楼层

请教高手:运行fortran出现的这个错误怎样改???急!!!

应该是数组的DIMENSION 定义有误,你将上述语句中数组的大小做适当调整即可消除错误。
发表于 2003-11-15 15:52:19 | 显示全部楼层

请教高手:运行fortran出现的这个错误怎样改???急!!!

你的数组越界了,仔细检查数组上下界
发表于 2003-11-15 16:08:13 | 显示全部楼层

请教高手:运行fortran出现的这个错误怎样改???急!!!

shyang5兄,难得我们有同感,如果今后有什么问题一定向你请教。
发表于 2003-11-20 12:29:10 | 显示全部楼层

请教高手:运行fortran出现的这个错误怎样改???急!!!

我觉得应该是系统的问题,我在进行其他操作时也有这样的问题出现。一部分内存系统不能调用,或者也有可能是内存或其他硬件问题。仔细查查。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表