【すたっくおーばーふろー】
スタックオーバーフロー とは?
💡 関数呼び出しが「積み重なりすぎて」崩壊する
📌 このページのポイント
- コールスタック(関数呼び出しの記録領域)が溢れるエラー
- 再帰関数の終了条件ミスが最も多い原因
- StackOverflowError(Java)やMaximum call stack size exceeded(JavaScript)
- 同名のQ&Aサイト「Stack Overflow」はプログラマーの聖地
コールスタックって何?
関数を呼び出すたびに「今どこにいるか」「ローカル変数の値」「呼び出し元の場所」をスタック(後入れ先出しの構造)に積む。関数が終わると情報を取り出して呼び出し元に戻る。この積み重ねが深くなりすぎるとメモリが足りなくなって、スタックオーバーフローが発生するんだよ
どうやって直す?
再帰以外でも起きる?
おもしろい!Q&AサイトのStack Overflowとの関係は?
プログラマー向けQ&AサイトのStack Overflowは、まさにこのエラーから名前を取ったんだ。プログラミングで「詰まった(オーバーフローした)」時に助けを求める場所、というシャレ。2008年のサービス開始以来、世界中のプログラマーの知恵袋になっていて、ほぼ全てのプログラミングエラーの解決策が見つかるよ
まとめ:ざっくりこれだけ覚えればOK!
「スタックオーバーフロー」って出てきたら「関数の呼び出しが深すぎてメモリが溢れるエラー」と思えればだいたいOK!
📖 おまけ:英語の意味
「Stack Overflow」 = スタック溢れ
💬 Stack(積み重ね)がOverflow(溢れる)。函数呼び出しの積み重ねが限界を超えるんだよ