C でグローバルおよびクラス静的変数に対してデストラクターが呼び出されるのはどのような場合ですか?

Patricia Arquette
リリース: 2024-11-07 14:39:03
オリジナル
331 人が閲覧しました

When are Destructors Called for Global and Class Static Variables in C  ?

C でのグローバルおよびクラス静的変数のデストラクター呼び出し

C では、通常、オブジェクトは (ローカル変数用) スタック メモリに割り当てられます。およびヒープ メモリ (動的に割り当てられる変数用)。ただし、グローバル変数とクラス静的変数はプログラムのデータ セクションに割り当てられるため、次のような疑問が生じます: それらのデストラクターはいつ呼び出されますか?

C 03 標準 (§ 3.6.3) によると、静的ストレージ期間を持つ初期化されたオブジェクトは、main 関数から戻ったとき、および exit 関数が呼び出されたときに呼び出されます。これらのオブジェクトは、コンストラクターの完了または動的初期化の完了とは逆の順序で破棄されます。

さらに、クラスの静的データ メンバー (§ 9.4.2 7) の場合、その初期化と破棄の動作は、非

ただし、デストラクターに観察可能な動作がない (つまり、副作用を実行しない) 場合、デストラクターは呼び出されない可能性があります。これは、「ブロックの終わりまで C デストラクターが呼び出されないことが保証されていますか?」に対する Terry Mahaffey の回答で説明されているように、コンパイラーがコードを最適化して不要なデストラクターの呼び出しを回避できるためです。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!