本文へ移動

おーばーふろー

オーバーフロー(あふれ)

計算結果やデータが、格納先である変数やメモリの許容量を超えてあふれ出す現象です。

詳しい説明

オーバーフローとは、コンピュータの計算結果やデータが、プログラムで定義された変数やメモリ領域の許容量を超えてしまう現象です。日本語では「あふれ」と呼ばれます。例えば、8ビットの変数には最大255までの数値しか格納できませんが、計算によってそれを超える数値(256など)が発生しようとした際に、この現象が起こります。

オーバーフローが発生すると、プログラムは正しい計算結果を保持できず、誤った値を返したり、予期せぬ動作を引き起こしたりします。これは単なる数値エラーにとどまらず、セキュリティ上の脆弱性(バッファオーバーフローなど)にもつながる重要な問題です。バッファオーバーフローは、メモリ領域を超えてデータを書き込むことで、プログラムの制御情報を書き換え、不正なコードを実行させる攻撃手法として悪用されます。

試験では、プログラミングやシステム開発の基礎として頻出します。計算時に扱う変数の桁数やデータ型の範囲を適切に設計することが、この問題を回避する鍵となります。また、開発者が境界値テストを行う重要性についても問われます。限界値を超えた入力や計算に対してプログラムがどう振る舞うかを予測し、適切なエラーハンドリングを実装することが対策の基本です。

試験で問われること

ITパスポート試験

  • 変数の扱える値の範囲を超える現象であることを理解する。
  • 予期せぬ動作の原因になることを把握する。
  • システム設計やテストにおいて境界値を意識する重要性を知る。

基本情報技術者試験

  • バッファオーバーフロー攻撃と、その仕組み(メモリ保護、制御情報の破壊)を理解する。
  • プログラミングにおいてデータ型の選択が重要であることを認識する。
  • 境界値分析や入力チェックによる対策の必要性を把握する。