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