C での静的変数とグローバル変数の初期化
C では、名前空間スコープを持つ静的オブジェクトとグローバル オブジェクトは C とは異なる方法で初期化されます。包括的な説明:
初期化フェーズ:
C はこれらの変数を 3 つのフェーズで初期化します:
指定された変数の初期化:
コード スニペット内:
ストレージおよび初期化値の管理:
コンパイル中、初期化値は、const でない限り、実行可能ファイルの「データ」セグメントに格納されます。その場合、それらは「テキスト」セグメントに配置されます。
システムは「データ」セグメントをメモリにロードし、静的初期化子を使用して静的変数を初期化します。イニシャライザのない変数または動的イニシャライザは「bss」セグメントに配置され、コードの実行前にシステムによってゼロに設定されます。
C 11 の追加メモ
C 11 では constexpr が導入され、一部のユーザー定義関数を静的初期化できるようになりました。スレッド ローカル変数も導入され、初期化手順がさらに複雑になります。
以上がC では静的変数とグローバル変数はどのように初期化されるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。