メモリ上のデータはいつ消えるか

 今回から話題を変えて、お話します。メモリ上のデータの消えるタイミングに関して数回、触れていきたいと思います。変数の値などは基本的にはメモリ上に格納されるということは何度かお伝えしてきたかと思います。今の時代のパソコンであれば、さほど気にすることではありませんが、メモリ容量が少ない昔のパソコンでは、不必要になったデータはメモリから削除することを厳密に考えなければなりませんでした。

 プログラマーさんが意図的にメモリ上のデータを削除するための命令もC言語にはありますが(入門のレベルを超えるので、ここでは扱いません。興味ある方は調べてみて下さい)、C言語では記憶域クラス指定を行うことで、自動的にメモリ上のデータを削除してくれます。

 記憶域クラス指定には、以下のようなものがあります。

  • auto:自動記憶域クラス
  • static:静的記憶域クラス
  • extern:外部記憶域クラス
  •  すべて、今までの講座では出てこなかったものです。難しいことを考えないなら、基本的には指定不要です。これらの記憶域クラス指定の定義は、簡単に言えば、変数がメモリ上でどのように格納・維持されるか、ソースコードのどの範囲内で適用できるか、どのタイミングで削除されるかについて定義されたものです。以前ご紹介したローカル変数(その変数が定義された関数の中でしか使われない変数)およびグローバル変数(関数の外で定義することで、どの関数からでも操作できる変数)とも関連しています。

     そのあたりも含め、次回以降から、これらの記憶域クラス指定についてお話していきたいと思います。次回は、まず、auto(自動記憶域クラス指定)について説明します。

     Tips:記憶域クラス指定には、auto、static、externの他にregisterという記憶域クラス指定も存在しています。しかし、今現在、registerの記憶域暮らす指定は、ほとんど使われていません。そのため、今回のC言語講座では解説は扱いません。興味のある方は調べてみてください。

    ■スポンサーリンク

このページの先頭へ