ホームページ  >  記事  >  バックエンド開発  >  C のグローバル変数およびクラス静的変数に対してデストラクターはいつ呼び出されますか?

C のグローバル変数およびクラス静的変数に対してデストラクターはいつ呼び出されますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-07 14:12:03295ブラウズ

When are destructors invoked for global and class-static variables in C  ?

C でのグローバルおよびクラス静的変数の破棄

C では、通常、デストラクターは動的に割り当てられたオブジェクトに関連付けられますが、この動作は拡張されますかグローバルおよびクラス静的に宣言された変数への影響はありますか?この問題を明確にするために、詳細を掘り下げてみましょう。

まず、グローバル変数とクラス静的変数は、通常、ローカル変数が割り当てられるスタックではなく、プログラムのメモリのデータ セクションに割り当てられることを理解することが重要です。住んでいる。この区別により、次のような疑問が生じます: これらの変数のデストラクターはいつ請求されますか?

C 03 標準 (セクション § 3.6.3) によれば、初期化された静的ストレージ期間オブジェクト (ブロック スコープまたは名前空間スコープで宣言されたもの) のデストラクターは、 ) は、main 関数を終了するとき、または exit を呼び出すときに呼び出されます。これらのオブジェクトは、最後に初期化されたものから順に破棄され、初期化されたものから終了します。この動作は、静的に初期化されるオブジェクトと動的に初期化されるオブジェクトの両方に適用されます。

さらに、セクション § 9.4.2 7 では、静的データ メンバーが非ローカル オブジェクトと同じ方法で初期化および破棄されることが指定されています。ただし、監視可能な動作を持たないデストラクターは呼び出されない可能性があることに注意してください。

以上がC のグローバル変数およびクラス静的変数に対してデストラクターはいつ呼び出されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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