HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0110
hogehogeスタック領域のオーバーフローのエラー原因について5解決


hogehoge

リンク

2013/1/10(Thu) 11:11:20|NO.51750

ゲームを作っているのですがスタック領域のオーバーフローとエラーが出ます。

エラー原因を調べたところ

サブルーチン呼び出しや、式の評価の処理中にスタックが破壊された場合に表示されます

と書いてありました。

エラー対処ページを調べてみたら

「gosub => return => gosub => return」 という流れになるようにしましょう。

と書いてあったのですが、直しても同じエラーが起きます。

現在の構成としては

////////////ゲームメインループ///////////

*main

gosub *a
gosub *b
gosub *c
gosub *main

return

gosub *a




return

gosub *b




return

gosub *c




return

の様なgotoを多用していたのをgosubに直したのですが・・・・だめです。

・・・・の中にも原因があると発生するエラーなのですか?



この記事に返信する


甘酒

リンク

2013/1/10(Thu) 11:46:00|NO.51753

return足りてないかgosub使いすぎなんじゃ



GrapeColor(DION)

リンク

2013/1/10(Thu) 12:08:29|NO.51754

*main〜gosubの間はただループしているだけなのでサブルーチンジャンプする必要性がありません。
サブルーチンではないので当然その後にあるreturnも必要ありません。
ただループするだけならgotoを使うか、repeat〜loopを使いましょう。
念のためgotoとgosubの使い方を確かめ直しておいたほうが良いと思います。



hogehoge

リンク

2013/1/10(Thu) 13:33:36|NO.51755

*mein




goto *main

にしたら直りました! 回答ありがとうございました!



check

リンク

2013/1/10(Thu) 13:44:33|NO.51756

解決しているようだが、なぜこのエラーが出たのかを知らないとまた同じことを繰り返すぞ。

最初のスクリプトは以下のような流れで動いている。

ラベルmain

ラベルaにサブルーチンジャンプ

リターン

ラベルbにサブルーチンジャンプ

リターン

ラベルcにサブルーチンジャンプ

リターン

ラベルmainにサブルーチンジャンプ

頭に戻る

よって、mainのサブルーチンが一向に解決(リターン)されないため、
サブルーチンの戻り場所を保存してあるスタックのオーバーフローが起きた。



gao-

リンク

2013/1/10(Thu) 15:08:36|NO.51762

checkさん解説ありがとうございます。
勉強になりました!



ONION software Copyright 1997-2021(c) All rights reserved.