OSのメモリ管理について

メモリ管理とは

アプリケーションがメモリにアクセスする方法を制御するOSの機能。必要になったときにメモリ領域を確保し不要になれば解放する。

なぜメモリ管理が必要か

  • メモリを効率的に利用する
  • メモリの競合を防止
  • メモリリークの防止

メモリの主な領域

メモリ領域には主にスタック領域・ヒープ領域・静的領域の3つの領域があり、それぞれのサイズや格納されるデータの種類が異なる。

スタック領域

スタック領域はデータ構造のスタックと同じくLIFOスタック。
データの格納や取得処理が高速だが、データは有限かつ静的出なければならない。以下にスタック領域の特徴を並べる。

  • LIFOスタック
  • 格納・取り出しが高速
  • 静的データを格納
  • OSが管理する
  • ローカル変数、ポインタ、関数フレームがデータに該当する

ヒープ領域

動的なメモリ割り当てに使用される。プログラム実行中にメモリを確保し解放する。ヒープ上のメモリは開発者が明示的に割り当てや解放を行う必要がある。言語による自動メモリ管理機構によって開発者がメモリ管理を意識せずに開発することができる。

参考