私は次のようなFortranコードを持っていました:
subroutine foo(mx,my,mz)
real pts(3,mx,my,mz)
end
配列ptsがサブルーチンで実際に使用されることはありませんでした。コードをリファクタリングしたときに、配列ptsを削除するのを忘れただけです。さて、Fortranにはスタックとヒープの概念がないので、ptsをどこに割り当てるかはコンパイラー次第です-これはgfortranの配列サイズの関数ですが、ポートランドグループコンパイラーがどのように理解することができませんでしたこれを処理します。
ptsがスタック、ヒープに割り当てられているかどうか、または完全に最適化されているかどうか(おそらくそうあるべきです)を判断することは可能ですか?スタックオーバーフローが発生し、それを知らない(つまり、ランタイムエラーが発生しない)可能性はありますか?私の本能は、コンパイラーによって生成されたアセンブリを見ることでわかるはずですが、そこで何を見ているのかわかりません。