スタックアンダーフロー
読み:スタックアンダーフロー
外語:stack underflow
プログラムのバグの一つ。スタック枯渇。
概要
スタックが枯渇している状態にも関わらず、スタックからデータを呼び出してしまうこと。
高級言語を利用している場合にはあまりお目にかかれないバグである。
特徴
スタックは、積み重ね(これをPUSHする、と言う)、後でそれを取り出す(これをPOPする、と言う)、という構造の、データ格納場所である。
次回データを積む場所をスタックポインターという指示子(レジスターなど)で指定する。PUSHすればポインターは進み、POPすればポインターは戻るだけのシンプルな機構で、このため速い。
範囲チェックなどは機構として存在しないため、もしPUSHしていないのにPOPすると、スタックポインターはスタック領域の範囲外を指し、そして値を読み出してしまう。これにより、セキュリティホールをはじめとして、様々な問題を発生させる。
再検索