C 関数の静的変数の有効期間
関数のスコープ内で変数を static として宣言すると、関数のスコープ内で変数が 1 回だけ初期化され、その値が維持されるようになります。関数の呼び出し。正確な有効期間を理解することは非常に重要です。
静的変数はいつ作成され、破棄されますか?
関数内の静的変数には、宣言が最初に行われたときから有効期間があります。プログラム終了まで。これは、次のことを意味します。
建設/破壊の追跡順序
静的変数の構築と破棄の順序を決定することは、特にマルチスレッド環境では不可欠です。標準では、静的オブジェクトのデストラクターは構築完了の逆の順序で実行されることが規定されています。
実装例
次のコードを考えてみましょう。スニペット:
struct emitter { string str; emitter(const string& s) : str(s) { cout << "Created " << str << endl; } ~emitter() { cout << "Destroyed " << str << endl; } }; void foo(bool skip_first) { if (!skip_first) static emitter a("in if"); static emitter b("in foo"); } int main(int argc, char*[]) { foo(argc != 2); if (argc == 3) foo(false); }
出力:
C:>sample.exe Created in foo Destroyed in foo C:>sample.exe 1 Created in if Created in foo Destroyed in foo Destroyed in if C:>sample.exe 1 2 Created in foo Created in if Destroyed in if Destroyed in foo
これは、静的変数の有効期間と構築/破壊順序を示します。
以上がC 関数の静的変数はどのくらいの期間存続しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。