回 帖 发 新 帖 刷新版面

主题:Fortran问题   求助

    SUBROUTINE TMMAN

       DOUBLE PRECISION AMT
       DOUBLE PRECISION DT,WX,WY,GR,F,DT2
       COMMON /COF0/A0,H0
       COMMON /COF1/DT,WX,WY,GR,F,DT2,RLATI,CMANI,CVISC                   
       COMMON /GRID/DXX,DYY,M,N
       COMMON /TIME/KYB,KMB,KDB,KHB,DTWRI,KE,KSTEP,NUM1,JGO,MD
       COMMON /ARRY/UVHD2,NDD,TIDLEV,IBH                              

    
       DIMENSION NDD(4200,4200),IDN(2,4200),JDN(2,4200)
       DIMENSION IBH(2,200),TIDLEV(3000,30),DYY(4200),DXX(4200)
       DIMENSION UVHD1(4200,4200),UVHD2(4200,4200),AMT(6,4200)

       CHARACTER  FILM*10

    .....省略代码
       RETURN
       END

当我调用玩这个函数 这个函数所开辟变量占用的内存会自释放么  
还是得用什么方法来释放

回复列表 (共5个回复)

沙发


既然是公用的,释放了还能实现共享么?

板凳

我想问问声明的变量有没有释放的方法 因为这个变量为会拿到外部去使用 使用完后想释放掉

3 楼

这个又不是Allocatable的,不用释放。

4 楼

common 区中的数据将伴随程序的一生,应该不可以释放。但子程序中的局部变量在 stack 中,return 后即被释放。

5 楼

common 语句的用法 -- 权威书籍 The Fortran 2003 handbook 告诉我们:在程序运行过程中, named common block without save attribute 也可能会释放(内存),是否释放内存 这是一个编译器相关的问题。因此,很多老程序中,经常在 program 中定义 named common block 或者用 include statement 插入各相关 procedure,就是为了避免上述情形的发生。

当然,楼主自己想(主动)释放 named common block 中变量的内存,似乎不现实。

我来回复

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