Fortran取消分配x函数 [英] Fortran Deallocate x function

查看:0
本文介绍了Fortran取消分配x函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Fortran编码语言中,取消分配(X)是用来做什么的?X变量是一个数组。我听说它删除了里面的所有元素。是真的吗? 其中一个例子是:

    Toplam = 0.0 
    DO K = 1, N 
    Toplam = (Ort - X(K))**2
     END DO ! bellek bloğu boşaltılıyor 
DEALLOCATE(X)
     Std_Sap = SQRT(Toplam/(N-1)) 
    PRINT *,"Ortalama : ",Ort 
    PRINT *,"Standart sapma: ",Std_Sap END PROGRAM Ortalama 

推荐答案

链接的问题When is array deallocating necessary?非常相关,我将尽量避免重复其中提出的观点,严格地回答主要问题&deallocate()实际做什么?

可分配变量(标量和数组)只是句柄或引用。在使用allocate()分配它们之前,它们实际上并不引用内存的任何部分。这种分配给它们提供了它们所占用的部分内存。此时,状态从未分配的";更改为已分配的";。(您可以使用allocated()函数查询状态。)

如果您有一个已分配的可分配对象(例如可分配数组),则可以使用deallocate()释放它。这种重新分配将从变量/数组中取回内存。变量现在是未分配的,并且不包含任何数据元素。它没有任何数组大小,您不能读写它,甚至不能打印size()shape(),它只是没有分配而已。它不再指任何特定的内存。

您在您的问题中使用了单词&已删除&。内存可能不会被重写,并且存储在那里的值可以保留在那里。但它们不再属于该数组,并且内存可能会分配给其他可分配变量或指针变量。

如链接答案所示,在某些情况下,释放是自动执行的。

这篇关于Fortran取消分配x函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆