我有一些看起来像这样的 fortran 代码:
subroutine foo(mx,my,mz)
real pts(3,mx,my,mz)
end
数组 pts 从未在子例程中实际使用过——我只是在重构代码时忘记删除它。现在,由于 fortran 没有堆栈与堆的概念,这取决于编译器在哪里分配 pts - 这是 gfortran 中数组大小的函数,但我无法弄清楚波特兰组编译器如何处理这个。
是否可以判断 pts 是否分配在堆栈、堆上,或者是否完全优化(可能应该如此)?是否有可能有一个 stackoverflow 并且不知道它(即没有运行时错误)?我的直觉是,应该可以通过查看编译器生成的程序集来判断,但我不知道我会在那里看什么。