プログラミングにおいて、変数などの値を使用する前に、その値が想定された範囲内の値であるかどうかを確認することです。
たとえば、バッファオーバーフローの対策として、配列の添字が、その配列の添字として有効な範囲内に収まっているかどうかを確認することが挙げられます。また、ある型の変数に値を代入する前に、その型で表現可能であることを確認することも境界検査の一種です。型として表現可能であるかどうかよりも厳しく、想定の範囲内の値であるかどうかを確認することも含まれます(たとえば、0~100 でなければならない事情がある場合に、この範囲内の値であることをチェックするなど)。
プログラミング言語やコンパイラによっては、バッファオーバーフローのようなよくあるバグへの対策として、自動的に境界検査を行う仕様になっているものがあります。このような場合、例外を送出するなどの方法で問題を知らせます。境界検査自体に処理時間がかかるため、実行速度を重視するC言語や C++ の言語仕様では行わないことになっており、プログラマーが境界検査のコードを書かなければなりません。
C言語の C11規格の標準ライブラリ関数には、strcpy_s関数(C言語編)のように、従来の関数に境界検査を追加したものがいくつか追加されています。C++ の場合も、std::vector の atメンバ関数など(新C++編)、境界検査を行うように作られているものもあります。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |