メモリアロケーション【memory allocation】メモリ確保/メモリ割り当て

概要

メモリアロケーションとはコンピュータプログラムの実行時に必要となるメモリ領域を確保し、プログラムへ割り当てる処理。プログラムが必要とする容量をオペレーティングシステム(OS)に要求し、メモリの空き領域から割り当てを受ける。
メモリアロケーションのイメージ画像

プログラムコンピュータ上で動作させる際には、複数の種類のメモリ領域が必要となる。プログラム自体の内容(コード)を記録する領域、初期化済みの静的データを保持する領域、関数呼び出しに伴う一時的な情報を保持するスタック領域、実行中に任意に確保されるヒープ領域などである。これらの領域に対して必要な容量を確保する作業がメモリアロケーションである。

コンパイル時、つまり実行ファイルを作成する段階で必要な容量が確定し、実行開始時に固定的な領域を確保してプログラム終了まで解放しない方式を「スタティックメモリアロケーション」(静的メモリ確保)という。主にグローバル変数や静的データの領域が対象となる。これに対し、実行が始まった後に必要な容量をその都度OSに伝えて割り当てを受け、不要になった時点で解放して空き領域に戻す方式を「ダイナミックメモリアロケーション」(動的メモリ確保)と言う。主にヒープ領域が対象となる。

静的確保は確保する容量があらかじめ決まっているため処理が高速で、管理も単純だが、実行中にデータ量が変化する処理には対応できない。動的確保は実行時の状況に応じて必要な分だけ確保できるため柔軟性が高く、可変長データや実行時にしか決まらない構造を扱う場合に用いられる。ただし、確保と解放を繰り返すことでメモリ断片化が生じる場合もある。

動的確保では、確保した領域を使用後に解放する処理が欠かせない。解放を怠ると、使われないまま確保され続ける領域が増えていく「メモリリーク」という不具合につながる。かつては開発者が手動で確保と解放を指示する必要があったが、現代の言語では「ガベージコレクション」(garbage collection)などの仕組みにより不要な領域を自動的に検知して回収する仕組みが普及している。Rustのように「所有権」という仕組みでコンパイル時に解放漏れや二重解放を検出する言語も登場している。

(2026.6.19更新)
 

他の辞典等による「メモリアロケーション」の解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。