オーバーフロー

読み:オーバーフロー
外語:over flow
品詞:さ変名詞

溢れること。

概要

電子計算機の演算処理で、計算結果が扱える数値範囲を超えてしまうこと。

数値は、変数の大きさ、より装置内部の視点から見るとCPUレジスタの大きさによって表わせる最大値(上限)が決まる。

もし演算結果がこの上限を超えてしまうと、変数(ないしレジスタ)に格納された演算結果は不正なものとなる。このような状態になることを、オーバーフローする、という。

実例

桁あふれは、実例に事欠かない。

たとえば変数で時間を管理した場合、次のような問題が発生しうる。

定期的に実行すべき処理があった場合、多くの実装では現在のカウンタ+待機時間を登録し、カウンタがその値以上なった時に処理を呼び出す(イベントを発生させる)よう、作られている。

この方法は処理が簡潔になるという利点があるが、オーバーフローすることを想定して作らないと、いつになっても想定したイベントが発生しない、といった問題を生じることになる。

バッファに格納するデータが、確保されている大きさからあふれてしまうことをバッファオーバーフローという。

確保された領域の外には、別のバッファやデータなどが存在するため、バッファオーバーフローを起こすとこれらデータを破壊してしまい、システムは誤動作する。

この問題も頻繁に発生し、セキュリティホールとなっている。

プログラム処理では、スタックがよく使われる。

このスタック領域の大きさには限りがあるが、その限度を超えてスタックを使ってしまうことをスタックオーバーフローという。

スタック領域の外にも、やはり別のバッファやデータなどが存在するため、スタックオーバーフローを起こすとこれらデータを破壊してしまい、システムは誤動作する。

この問題も頻繁に発生し、セキュリティホールとなっている。