ホームページ >バックエンド開発 >C++ >C 関数の静的変数の有効期間と初期化/初期化解除の動作は何ですか?

C 関数の静的変数の有効期間と初期化/初期化解除の動作は何ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-28 14:19:22907ブラウズ

What is the Lifetime and Initialization/Deinitialization Behavior of Static Variables in C   Functions?

C 関数の静的変数の有効期間

関数内で変数が static として宣言されると、その変数は 1 回だけ初期化され、その値が初期化されます。後続の関数呼び出しを通じて保持されます。ただし、正確な有効期間を決定することは、その動作を理解するために非常に重要です。

関数の静的変数の有効期間には以下が含まれます:

  • 初期化:プログラムの実行は変数宣言に達し、その初期化のみが保証されます
  • 初期化解除: 自動変数とは異なり、関数静的変数はプログラム終了時に初期化解除され、適切なリソース解放が保証されます。

そのコンストラクターとデストラクターの呼び出しに関しては、 C 標準では、これらがそれぞれ初期化中と初期化解除中に自動的に呼び出されるように指定されています。これにより、適切なオブジェクトの作成と破棄が保証されます。

ライフタイムの例

次のコード スニペットを考えてみましょう。

void foo() { 
    static string plonk = "When will I die?";
}

この例では、静的変数plonk は、実行が初めて foo 関数に入ったときに初期化されます。これは静的であるため、その値はその後の foo 呼び出し全体にわたって持続します。プログラムの終了時に、plonk のデストラクターが呼び出され、変数が破棄されます。

さらに、プログラムの実行ごとに、静的変数の構築と破棄の順序が異なる場合があり、その結果、異なる出力が得られます。

以上がC 関数の静的変数の有効期間と初期化/初期化解除の動作は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。