記憶域期間 | Programming Place Plus 用語集

トップページ用語集

名称

解説

プログラミングにおいて、変数などのオブジェクトと、メモリ上の実体との結びつきが維持され、が記憶されている期間のことです。

プログラミング言語によって用語はさまざまに異なります。C言語や C++ では storage duration(記憶域期間、ストレージ期間などと訳される)と呼ばれます(これらのプログラミング言語の仕様では、メモリ領域のことを記憶域と表現します)。ほかの言語では、生存期間や有効期間、エクステントなどという用語が当てられていることがあります。

いわゆるローカル変数仮引数は、それを宣言している関数実行されたときから、リターンするまで(あるいは宣言したブロック内)が記憶域期間ということになります。このような変数は自動変数と呼ばれ、C言語や C++ では自動記憶域期間をもつ変数と表現されます。

いわゆるグローバル変数クラス変数は、多くのプログラミング言語では、プログラムの実行開始から終了まで存在しており、そうであるならばプログラムが実行されている全期間が記憶域期間ということになります。C言語や C++ では、これを静的記憶域期間と呼びます(static指定子を付加して宣言されたローカル変数もこれに含まれます)。

ダイナミックメモリアロケーション(動的メモリ割り当て)によって確保されるメモリ領域は、割り当てが行われてから、解放されるまでが記憶域期間となります。C言語や C++ では、これを動的記憶域期間(割付け記憶域期間)と呼びます。

スレッドごとに別個に確保するメモリ領域は、そのスレッドが生きているあいだが記憶域期間となります。C言語(C11 から)や C++(C++11 から)では、これをスレッド記憶域期間と呼びます。

また、クロージャによるキャプチャや、C++ の参照(リファレンス)による束縛など、対象の変数やオブジェクトの本来の記憶域期間を延長するものがあります。


よく混同される用語に、スコープがあります(特に、スコープを「有効範囲」と呼ぶことがあるため、「有効期間 (lifetime)」との区別に注意)。スコープは、変数や関数などを識別子(名前)によって参照できる範囲のことを指します。いわゆるローカル変数やグローバル変数という用語は、スコープによって分類したものであり、この分類と記憶域期間とは同一のものでも、1対1に対応するものでもありません。たとえば、プログラムの実行開始から終了までが記憶域期間であるローカル変数もありえます(たとえば、C言語や C++ において、static指定子を付加して宣言されたローカル変数)。


参考リンク

更新履歴


用語集のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る