堆栈/堆内存模型是可选的吗?

Jos*_*ton 6 stack fortran memory-management heap-memory llvm

我无法理解堆栈/堆内存模型的使用是否是程序员的决定,或者它是否取决于操作系统,程序员别无选择,只能使用它.

例如,像Fortran77这样的无堆栈语言是否可以在现代平台上运行,仍然使用无堆栈,基于阵列的内存模型?或者,现代Fortran编译器必须将数组内存模型转换为堆栈/堆内存模型吗?(我找不到很多关于Fortran内存管理的文档.)

如果内存模型是程序员的决定,为什么我遇到的所有内容似乎都隐含地假设堆栈/堆模型是唯一的选择?例如,LLVM使用堆栈帧运行,我找不到任何其他方式管理内存的文档.所有基于LLVM构建的语言,甚至是函数式语言,都必须采用堆栈/堆模型,而替代模型可能更适合.

如果内存模型是操作系统的决定,这是否意味着编写使用自定义内存模型的程序需要编写自定义操作系统?例如,如果我想运行Fortran程序使用Fortran设计的基于阵列的内存模型,我是否需要自定义操作系统?

如果答案取决于操作系统,请在不同操作系统之间进行一些比较.

Ian*_*ush 5

堆栈和堆没有与Fortran 直接相关,标准根本没有说明它们.同样C,至少到C89,之后我的知识就不那么好了.相反,编译器必须将标准定义的语言特征转换为底层内存模型.该内存模型是编译器实现者的选择,但通常最方便的是使用目标操作系统为您提供的任何功能.因此,您经常会看到堆栈和堆,但至少就Fortran和C而言,与编程语言无关.