スタックフレーム 【stack frame】
概要
スタックフレーム(stack frame)とは、コンピュータプログラムの実行時に用いられるデータ構造の一つで、関数などを呼び出す際に呼び出し元の情報や引き渡す引数の値などを一時的に保管しておくためのもの。コールスタックに記録される。プログラムが実行される際、メインメモリから一定の容量が「コールスタック」(call stack)と呼ばれる領域として確保される。関数などの呼び出しが行われると、呼び出し側の実行状態をスタックに一時保管し、呼び出しが終了すると保管された内容を取り出して呼び出し前の状態が復元される。
呼び出し側がスタックに記録するひとまとまりのデータ構造をスタックフレームという。項目や形式はCPUやオペレーティングシステム(OS)の種類、プログラミング言語などにより異なるが、終了時に戻るべきメモリ上の実行位置(リターンアドレス)や、呼び出し側が保持していたレジスタなどの情報で構成される。呼び出し側から引き渡す引数の内容などを入れる場合もある。
呼び出し先の関数などがさらに別の関数などを呼び出すと、スタックの末尾にスタックフレームが追加されていく。スタックの容量には限りがあるため、何重にも次々に関数を呼び出していくと容量を使い果たしてそれ以上スタックフレームを追加できなくなり、「スタックオーバーフロー」と呼ばれる実行時エラーとなって異常終了する。
(2024.2.8更新)