Fortran 77 程序员如何在没有动态内存分配的情况下进行管理?
How do fortran 77 programmers manage without dynamic memory allocation?
我开始学习 Fortran,来自 C++/Matlab/Java 背景。我意识到一些 Fortran 程序员仍然坚持使用 F77,可能是因为他们不喜欢面向对象、命名空间和其他东西,并且习惯了旧语法。
我知道您可以编写没有 OOP 的程序。我不明白的是没有动态内存管理你怎么办。有数以千计的情况下您事先不知道数组大小的示例 - 例如将完整矩阵转换为稀疏矩阵时。
当然,现代 Fortran 同时提供 "automatic arrays" 和 "allocatable arrays"。但是这些在 1977 年还不存在。如果没有这些结构,F77 的家伙怎么办?
在标准语言中,该方法通常是在一个数组中预留存储空间,该数组比可能需要的要大,但仍在平台 运行 程序的限制范围内,然后手动将该存储空间打包按要求。该语言具有序列关联、存储关联和可调整数组等功能,有助于进行这种分割。
使用语言扩展进行动态内存管理也很常见。
Fortran 77 及更早版本的功能需要结合当时平台的功能来考虑。
我开始学习 Fortran,来自 C++/Matlab/Java 背景。我意识到一些 Fortran 程序员仍然坚持使用 F77,可能是因为他们不喜欢面向对象、命名空间和其他东西,并且习惯了旧语法。
我知道您可以编写没有 OOP 的程序。我不明白的是没有动态内存管理你怎么办。有数以千计的情况下您事先不知道数组大小的示例 - 例如将完整矩阵转换为稀疏矩阵时。
当然,现代 Fortran 同时提供 "automatic arrays" 和 "allocatable arrays"。但是这些在 1977 年还不存在。如果没有这些结构,F77 的家伙怎么办?
在标准语言中,该方法通常是在一个数组中预留存储空间,该数组比可能需要的要大,但仍在平台 运行 程序的限制范围内,然后手动将该存储空间打包按要求。该语言具有序列关联、存储关联和可调整数组等功能,有助于进行这种分割。
使用语言扩展进行动态内存管理也很常见。
Fortran 77 及更早版本的功能需要结合当时平台的功能来考虑。