Petitverse
ゲストさん (
ログイン
)
ログイン
コミュニティ内検索
コミュニティ一覧
Petitverse ご利用ガイド
Petitverse からのおしらせ
プチコン 非公式コミュニティ
トピック
ドラキーマカレー
◆3jIC4XsSXrZX
2020/4/26 23:09
質問
何があふれたの?
「スタックがあふれる」の「スタック」って何ですか?
コメント
うょリウム(元 SPDX)
2020/4/27 0:14
◆UTOEg1c1vr.B
えーっと、GOSUB連打とかでしたっけ…?
ドラキーマカレー
2020/4/27 0:38
◆3jIC4XsSXrZX
A
DEF A
A
END
しました
うょリウム(元 SPDX)
2020/4/27 2:24
◆UTOEg1c1vr.B
無限ループでスタックというやつをあふれさせたのですね。
DEF A
A(Aを実行、ENDでここに戻る予定)
→DEF A
A(Aを実行、ENDでここに戻る予定)
→DEF A
A(Aを実行、ENDでここに戻る予定)
その「予定」を覚えきれなくなったわけです。
OPTION STRICT
VAR A,B
DEF A
INC B
A
END
(エラー後)
?B
これで容量が見られるです。
※プログラムは3号のものです。
さすらいの名無し
2020/4/27 9:07 ネタバレ
◆LWMA5UzCJb3e
↑3 GOSUBでも再現はできそう
@A
GOSUB @A
RETURN
このコメントはネタバレを含んでいます。
このコメントをひらく
Na
2020/4/27 9:32
◆QoELVrBXBQCI
個人的には「Stack underflow」はどうしたら発生するのか気になります。
高原のな
2020/4/27 9:45 ネタバレ
◆bY8RViwvoODw
アンダーフローってあれですよ、浮動小数の精度不足みたいなのを指すのであって、負の側に吹っ切れるのもオーバーフローですって
(アンダーフロー警察から教え込まれた)
このコメントはネタバレを含んでいます。
このコメントをひらく
こういち
2020/4/27 10:01
◆ou0jbJnEJ0Kb
スタックについてちょっと補足
スタックは積み上げるとかそんな意味があったりします。
例えば、積み上げられた本から一冊取り出すとき、最も最近積んだ本から取り出しますよね。
そんな感じで、データを追加したり、最も最近追加したデータを取り出したりできるデータ構造をスタックと言います。
このスタックがサブルーチンと相性が良いのです。
何故なら、サブルーチンから戻るときは、最も最近呼び出されたサブルーチンに戻るからです。
逆に取り出すとき最も昔に追加されたデータを取り出すデータ構造もあって、キューと呼ばれています。こっちは行列に並ぶ人間に例えられます。迷路を解くときなどに使えます。
こういち
2020/4/27 10:08 ネタバレ
◆ou0jbJnEJ0Kb
ここからあまり関係ない話
スタックやキューの他に、取り出すときに最も値の大きなものを取り出すデータ構造もあったりして、これはヒープやプライオリティキューと呼ばれたりします。
ところで、スタックやヒープと言うと、データ構造の他にメモリを保管する場所のことを言ったりします。こちらはスタック領域、ヒープ領域とも呼ばれ、データ構造のスタックやヒープとは違うので注意です。
(末尾再帰最適化の話は…さすがにやめておこう)
このコメントはネタバレを含んでいます。
このコメントをひらく
ツララ
2020/4/27 10:45
◆ArUdBYOYME1V
配列の要素数操作関係の命令で、PUSHやPOP()やUNSHIFTやSHIFT()とかありますけど
スタックはDEF~ENDやGOSUB~RETURNとか、他の処理に飛んだあと戻って来る処理で
戻り先の場所を一時的に覚えておくための配列みたいなもんかと。
メモリの都合で配列や変数を無制限に作れないのと同じで
スタックも数が増えすぎるとエラーが出る限界があるってことですな。
戻り先場所の配列と一緒に戻り先のデータの配列も作っておけば
ソートしたりして色々応用ができるってことですか。
シリアル番号の配列も一緒に作っておけば、ソートした状態で要素数操作した後にソート前の状態に復帰もできるし。
ドラキーマカレー
2020/4/27 11:36 ネタバレ
◆3jIC4XsSXrZX
これは「お前飛ばしすぎだろ!こんなに飛ばされたら元々の場所なんか分かっかよ!」ってプチコンが嘆いてる…という解釈でいいんですか?
このコメントはネタバレを含んでいます。
このコメントをひらく
さすらいの名無し
2020/4/27 11:50
◆LWMA5UzCJb3e
イメージ的にはこんな感じ?
Na
2020/4/27 12:05
◆QoELVrBXBQCI
こういう例でも起こります
@MAINLOOP
(省略)
GOSUB @YAMERU 'やめるボタンの処理
(省略)
GOTO @MAINLOOP
@YAMERU
IF (やめるボタンが押された) THEN GOTO @GAMEEND 'もう戻ってこない
RETURN
なのでおもちSPでやめるボタンを65535回くらい押せばStack overflowになると思います。
高原のな
2020/4/27 13:32 ネタバレ
◆bY8RViwvoODw
ドラキーマカレーさん
だいたいあってるきがする
以下の部分が合ってる自信がないのでネタバレにしました
ユーザ定義命令の場合は、戻る場所というより戻る状態(その時々のローカル変数の値)をスタックに積むはず(これは怪しい)
ラベルの場合は単純に戻る位置をスタックに積むと思う(これはたぶんそう)
通常は飛ばした後に飛ばした数だけ戻るので、(あらかじめ決まっている)スタックの領域をほとんど消費しないのです。しかし、一向に戻らずにいるとそのスタックの領域を溢れそうになる、つまり戻る場所を記憶できなくなるので、どちらかというと「今いる場所を覚えられないから飛ぶことができない」なのかもしれない
このコメントはネタバレを含んでいます。
このコメントをひらく
うょリウム(元 SPDX)
2020/4/29 18:01
◆UTOEg1c1vr.B
「これやって。急いでないけど大事なことだからね。」
「今やってることは急いでないんでしょ?
一旦中断して先にこっちをやって欲しいな。
終わってからその続きをやって」
「はい手を止めてコレ最優先で頼むよ。ソレはコレが終わってからやってね。」
「コレは一刻の猶予もない仕事なんだ。そんなこと後にして、真っ先にやってくれ!」
「緊急地震速報だ!何より先に安全を確保しろ!」
「腕にスズメバチが!安全確保より
先に即座に叩き落とさねば!」
あれ?最初に何をやってたんだっけ?
やるべきことの順番は…?
スズメバチを吹っ飛ばしたら何をするんだっけ…?
コメントを書く
こちらは「プチコン3号」「プチコンBIG」など、
プチコンシリーズ
に関する話題を扱った
コミュニティです
プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
ユーザー登録なしで書き込みができます
秘密の合い言葉は成りすましの防止 (
トリップ機能
)、書き込みの編集時の本人認証に使用します
秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります
normal
happy
like
surprized
frustrated
puzzled
画像
ネタバレ
投稿する
-
WEB PATIO
-