ローカル変数
また、ローカル変数が定義された関数の制御フローが呼び出し元に返り、コールスタック領域が解放されると、そのローカル変数のメモリ領域は自動的に解放される。したがって「自動変数(英語版)」とも呼ばれる。未初期化の自動変数の内容は不定 (indeterminate) である。
ローカル変数宣言にstaticキーワード(静的記憶クラス指定子)を付加すると、「静的ローカル変数」となり、変数寿命はプログラムの生存期間と同一となる。C言語では静的ローカル変数はグローバル変数と同じくプログラム開始処理以前に一度だけ初期化されるが、C++では制御フローが静的ローカル変数の定義箇所に到達した際にその初期化式が一度だけ評価され、その値によって変数は一度だけ初期化される。
C99の例を示す。なお、下記(1)はC言語およびC++03規格までのC++ではauto int a = 0;と等価だが、C++11以降はautoキーワードの意味が変更されたため、等価ではなくなった。
以下のコードはC++ではコンパイル可能だが、C言語では静的ローカル変数はコンパイル時定数で初期化されなければならないため、コンパイル不可能である。
C++ではSingleton パターンの実現に静的ローカル変数が利用されることがある。
また、C++ではローカル変数の寿命が尽きるときにデストラクタが呼ばれる。この性質を利用したデザインパターンがRAIIである。