C でのメモリ割り当て : グローバル データ構造のスタックとヒープ
C でデータ構造をグローバルに宣言する場合、次のような疑問が生じます。スタックメモリまたはヒープメモリを消費します。これを完全に理解するには、プロセスが使用するさまざまなメモリ セグメントを理解することが不可欠です。
通常、プロセスは 5 つのメイン メモリ領域を所有します:
元の質問に戻る、データ構造が (関数内ではなく) グローバルに宣言されている場合、データ セグメント (初期化されたデータ) または bss セグメントのいずれかに割り当てられます。 (初期化されていないデータ)、初期化されているかどうかに応じて異なります。これらのセグメントは静的メモリに常駐し、通常はオペレーティング システムによって管理され、プログラムからはアクセスできません。
したがって、C でグローバルに宣言されたデータ構造はスタック メモリを消費しません。
以上がスタックとヒープ: C でグローバルに宣言されたデータ構造はどこに存在するのか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。