静的データ メンバーのメモリ割り当ての影響
IBM C ナレッジ センターには、クラス メンバー リストでの静的データ メンバーの宣言が次のように記載されています。は定義ではないため、名前空間スコープのクラス宣言の外で定義する必要があります。これにより、なぜこれが必要なのか、メモリ割り当てに関して回路図にどのような影響があるのかという疑問が生じます。
1 つの定義ルールに従って、プログラム内の各静的オブジェクトは 1 回だけ定義する必要があります。ヘッダー ファイル内の静的オブジェクトの宣言が定義である場合、翻訳単位間で複数の定義が作成され、ルールに違反します。
これを回避するために、ヘッダー ファイル内の宣言は定義ではありません。代わりに、単一の定義をクラス定義の外部 (通常はプライマリ翻訳単位のソース ファイル内) に提供する必要があります。これにより、静的オブジェクトはプログラム全体で 1 回だけ定義され、単一定義ルールが遵守されます。
メモリ割り当ての観点から、静的データ メンバーは静的データと呼ばれるメモリの特別なセグメントに割り当てられます。セグメント。これらはプログラムの起動時に 1 回だけ初期化され、プログラムの存続期間中はその値が保持されます。これは、オブジェクトの作成時にスタックまたはヒープに割り当てられ、オブジェクトの破棄時に破棄される非静的データ メンバーとは対照的です。
以上がC のクラス宣言の外で静的データ メンバーを定義する必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。