C でのグローバルおよびクラス静的変数の破棄
C では、通常、デストラクターは動的に割り当てられたオブジェクトに関連付けられますが、この動作は拡張されますかグローバルおよびクラス静的に宣言された変数への影響はありますか?この問題を明確にするために、詳細を掘り下げてみましょう。
まず、グローバル変数とクラス静的変数は、通常、ローカル変数が割り当てられるスタックではなく、プログラムのメモリのデータ セクションに割り当てられることを理解することが重要です。住んでいる。この区別により、次のような疑問が生じます: これらの変数のデストラクターはいつ請求されますか?
C 03 標準 (セクション § 3.6.3) によれば、初期化された静的ストレージ期間オブジェクト (ブロック スコープまたは名前空間スコープで宣言されたもの) のデストラクターは、 ) は、main 関数を終了するとき、または exit を呼び出すときに呼び出されます。これらのオブジェクトは、最後に初期化されたものから順に破棄され、初期化されたものから終了します。この動作は、静的に初期化されるオブジェクトと動的に初期化されるオブジェクトの両方に適用されます。
さらに、セクション § 9.4.2 7 では、静的データ メンバーが非ローカル オブジェクトと同じ方法で初期化および破棄されることが指定されています。ただし、監視可能な動作を持たないデストラクターは呼び出されない可能性があることに注意してください。
以上がC のグローバル変数およびクラス静的変数に対してデストラクターはいつ呼び出されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。