コールスタック
スタックオーバーフローが発生したときの動作はプログラミング言語や実行環境によって異なるが、通例プログラムの異常終了といった未定義動作を引き起こし、回復不可能であることが多い。
1つの実行中のプログラム(より正確に言えばスレッド)には、1つのコールスタックが対応して存在する。シグナル処理や協調的マルチタスク処理で追加のスタックを使う場合もあるが、通常使用中のコールスタックは常に1つなので、これを単に「(そのタスクの)スタック」と呼ぶことがある。
低水準言語(アセンブリ言語)の多くでは、プログラマが明示的にスタックを操作する必要がある。一方、高水準言語からはコールスタックは透過的である。つまりコールスタックの存在を意識することなく、呼び出し階層構造によって実現される上位概念としてのプログラムロジックにのみ集中できるということである。コールスタックの詳細はプログラマからは見えず、引数あるいはローカル変数といった形でスタックから切り出された部分領域だけにアクセス可能で、スタックを構成しているメモリ全体にアクセスすることはできない。