IT基礎・コンピュータの用語一覧へ
このページの目次

メモリとは?

読み方:メモリ

最終更新:2026/08/18

3秒でわかる

実行中のプログラムとデータを一時的に置く高速な記憶領域。電源を切ると消えるため、残したいデータはディスクへ書き出します。

30秒図解

メモリは実行中の命令とデータをCPUの近くに置く、SSDより低遅延な高速一時領域で、電源を切ると内容が消える
速いメモリで処理し、残すデータはディスクへ書く

もう少し詳しく

どういうものか

メモリ(主記憶、RAM)は、実行中のプログラムの命令とデータを置いておく記憶領域です。CPU が直接読み書きできる速度を持つ代わりに容量が小さく、電源を切ると内容が消えます。1 バイトごとにアドレスという通し番号が振られており、変数はこのアドレス上の場所に対する名前だと考えると理解が進みます。

なぜ必要か

CPU はディスク上のデータを直接処理できません。SSD であってもメモリとは 100 倍以上の速度差があり、毎回読みに行けば計算より待ち時間の方が長くなります。そこで実行に必要な分だけをメモリへ載せて処理し、結果をディスクへ戻します。この階層構造があるおかげで、安価で大容量のディスクと高速なメモリを両立できています。

具体例

int a = 10; // <a href="/glossary/stack" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">スタック</a>上に確保され、<a href="/glossary/function" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">関数</a>を抜けると消える int *p = malloc(sizeof(int) * 100); // <a href="/glossary/heap" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">ヒープ</a>上に確保される if (p == NULL) return 1; p[0] = 42; free(p); // 返却しないとリークになる
import sys xs = [0] * 1000 print(sys.getsizeof(xs)) # この<a href="/glossary/list-ds" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">リスト</a>が占める概算バイト数

C では確保と解放を自分で書きますが、Python や Java では参照されなくなった領域をガベージコレクタが自動で回収します。

つまずきやすいところ

  • 解放したのに使い続ける、あるいは解放を忘れる。前者はクラッシュ、後者はメモリリークとして時間差で現れる

  • 自動管理の言語でもリークは起きる。参照が残り続けるキャッシュやイベントリスナーが典型

  • 配列の範囲外に書き込むと、隣の領域を壊して無関係な変数が化ける

  • 「メモリを増やせば速くなる」とは限らない。足りているならディスクや CPU が原因
  • 似た用語との違い

    プログラムから見たメモリは、用途ごとにいくつかの領域に分かれています。関数の呼び出しごとに積まれて自動で解放されるのがスタック、実行中に任意の大きさを確保して明示的または自動的に回収されるのがヒープ、プログラムの命令そのものや定数が置かれるのが静的領域です。再帰が深すぎて落ちるのはスタックが尽きたときで、確保し続けて落ちるのはヒープが尽きたときと、原因の切り分けにこの区別が効きます。

    階層速度揮発性
    レジスタ / キャッシュ最速消える
    メモリ(RAM)速い消える
    SSD / HDD遅い残る


    覚え方

    机の上がメモリ、引き出しがディスクです。作業中の書類は机に広げ、終わったら引き出しへしまいます。机が狭いと出し入れが増えて仕事が遅くなります。

    次に学ぶ

    データ構造とは?

    知識のつながり

    サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

    現在地メモリIT基礎

    LEARN BY DOING

    この用語を、教材で使ってみる

    直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

    この用語を扱うコース

    コース

    コンピューターサイエンス入門:理論編

    53レッスン
    コース

    C言語中級 ポインタとメモリ

    46レッスン
    コース

    コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB

    135レッスン
    コンピュータサイエンスコースの全編を見る