プログラムの実行中、自動的にメモリに配置され、自動的に解放される変数のことです。
多くのプログラミング言語において、自動変数とはローカル変数のことです。つまり、関数内で宣言されているローカル変数は、その関数が実行されるときに、自動的にメモリに配置され(多くの場合、コールスタックにその場所がある)、関数からリターンするときに自動的に解放されます。
ローカル変数であっても、プログラムの実行開始から終了まで存在し続けるように指定された変数は自動変数とは呼ばず、静的変数と呼ばれます(たとえば、C言語や C++ では、static指定子を付加して宣言されたローカル変数が該当する)。
C言語や C++ では、自動記憶域期間という用語で表現されます(「自動記憶域期間をもつ変数」のように)。static指定子を付加されていない、普通のローカル変数のことです。
void func(void)
{
int a; // 自動記憶域期間をもつ変数
// func関数が実行されるときにメモリに置かれる
static int b; // 静的記憶域期間をもつ変数
// プログラムが実行開始したときにメモリに置かれる
// ...
} // 関数からリターンするとき、a は解放されるが、b は残る
古い標準規格では、auto指定子を付加して宣言することで、それが自動記憶域期間をもつ変数であることを明示できましたが、冗長なので普通は使われることはありませんでした。また、C11規格になって廃止されています。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |