くだすれFORTRAN(超初心者用)
at TECH
953:デフォルトの名無しさん
06/10/25 23:39:38
>>951
オートマチック変数または自動変数とは、サブルーチンが呼び出されたときに
一時的に割り付けられる変数だ。
SUBROUTINE unko(a, n)
IMPLICITE NONE
REAL, INTENT(IN) :: a(n)
REAL :: work(SIZE(a))
云々
とあったとすると、配列workが自動変数にあたる。
これはあまり大きなものを取ることを想定しておらず、スタック領域に割り付ける。
こういう使い方で大きな配列などを取っていると、スタックオーバーフローがおきる。
サブルーチンを呼び出すと、戻る場所などの情報をスタックに保存することになる。
またサブルーチンで一時的に使用するメモリー等もスタックに取る。
サブルーチンの呼び出しが過剰に多いか(再帰関数が無限ループとか)、
一時変数が領域を食いすぎるとオーバーフローが出る可能性がある。
エラーメッセージからするとDEC系のコンパイラの感じだが、トレースバック情報などの
デバッグ情報を吐き出させるオプションをつけてコンパイルし実行してみるのも手だ。
まぁ、もう少し詳しい情報が無いと助言のしようが無い。
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4319日前に更新/404 KB
担当:undef