gpt4 book ai didi

fortran - Fortran 中的自动数组释放

转载 作者:行者123 更新时间:2023-12-04 13:16:33 26 4
gpt4 key购买 nike

我正在使用 gfortran -std=f2008。我有一个函数,它返回一个包含可分配数组的派生类型。该函数在返回之前调用allocate()。似乎在分配数组的函数返回之后,数组会自动释放一段时间,并且我的程序出现段错误。

什么时候自动解除分配?我应该以不同的方式编码吗?

最佳答案

一个通用的答案:可分配的数组在超出范围时会自动释放。在外部作用域中“使用”结果后,函数结果会自动释放。当父派生类型变量超出范围或被释放时,可分配组件被释放。

只有 pointers , 指向函数结果在释放后未定义,不应使用。如果你这样做,它可能会导致你描述的问题。

此外,当数组在赋值时自动重新分配时,指向它的指针变为未定义(但实际上可能不会改变)。

换句话说,当正确使用可分配项时,您描述的问题不应该发生。

关于fortran - Fortran 中的自动数组释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21551314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com