配列とは?はいれつ
配列とは、同じ型の要素を連続した記憶領域に並べ、添字で位置を指定するデータ構造。先頭アドレスと添字から要素の位置を計算できるため任意の要素に一定時間で到達できる一方、途中への挿入・削除は後続を全部ずらすためO(n)かかる。C言語のように添字の範囲検査を行わない言語では、確保した領域の外へ書き込めてしまい、バッファオーバーフローの根本原因になる。
最終更新:2026-10-06
情報処理安全確保支援士を最短で暗記・合格する →背景
配列はメモリ上の位置計算だけで要素を扱えるため高速だが、その計算は「添字が範囲内である」ことを前提にしている。範囲外を指しても止めない言語では、隣接するメモリ——戻り先アドレスや他の変数——を上書きでき、これが任意コード実行につながる。支援士では、脆弱性の分類でバッファエラーが挙げられ、境界検査を行う言語や安全な関数の選択が対策として問われる。
具体例
C言語でchar buf[64]に入力をstrcpyで写すと、65文字以上の入力で隣の領域を壊す。JavaはArrayIndexOutOfBoundsExceptionを投げて止め、Rustは実行時に境界検査を行う。2次元配列a[i][j]の先頭からの変位は行優先なら(i×列数+j)×要素長で、この式は午前Iの計算問題として出る。
試験での引っ掛け
行優先(C言語系)と列優先(FORTRAN系)の違い、添字が0始まりか1始まりかの見落としが計算問題の失点原因。連結リストと比べて「参照は速いが挿入・削除は遅い」という長短を逆に覚えやすい。バッファオーバーフローの対策として「配列を使わない」は答えにならず、境界検査のある言語・安全な関数・コンパイラの保護機能(カナリア等)が正解の方向。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。