プログラミングにおける記憶域期間のうち、その期間が、明示的な動的メモリ割り当てと解放によって決まるもののことです。
ダイナミックメモリアロケーション(動的メモリ割り当て)によって確保・解放されるメモリ領域は、動的記憶域期間を持ちます。確保(アロケート)が行われた時点で記憶域期間が開始され、解放(デアロケート、リリース)が行われた時点で記憶域が終了します。
アロケートを行う関数や演算子は、割り当てたメモリ領域にアクセスできるようにメモリアドレスなどの情報を返しますが、それを変数で受け取った場合に、その変数が動的記憶域期間を持つということではありません。たとえば、その変数がグローバル変数であるのなら、その変数自身の記憶域期間は、静的記憶域期間です。
C言語では、割付け記憶域期間 (allocated storage duration) と呼ばれます。
malloc関数などの、動的メモリ割り当てを行う関数によって確保されたストレージ(メモリ領域)は、割付け記憶域期間を持ちます。割付け記憶域期間は、free関数によって解放されるまで続きます。
C++ では、動的記憶域期間 (Dynamic storage duration) と呼ばれます。
new式によって作成され、delete式によって削除されるオブジェクトのためのストレージ(メモリ領域)は、動的記憶域期間を持ちます。実際にこの領域を確保するのは operator new() であり、解放は operator delete() が行います。
C++ の new や delete に関する解説は、C++編【言語解説】第14章や第36章にあります。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |