3

静的メンバー変数のサイズはsizeofオペレーターによってカウントされないため、データセグメントにあると思います。私は正しいですか?

4

2 に答える 2

3

正しい推測。静的メンバーは本質的にグローバル変数ですが、グローバル変数の名前空間にはありません。それらのストレージはデータセグメントにあります。

編集:実装が、静的メンバーを通常とは異なる保管場所にある可能性があると判断した場合、それは問題ではありません。静的メンバーのセマンティクスは同じままであり、それらのストレージの自然な場所はグローバル データです。静的メンバーはオブジェクト インスタンスの一部ではないため、サイズにはカウントされません。

coinsyx が C++ 標準からの正式なメモを要求している兆候はないため、これは質問に対する十分に正確な回答だと思います。

Trojanfoe は従来の x86 システムに対しても適切であり、その他のシステムに対しても適切である可能性があることを付け加えておきます。このような場合、通常、初期化された変数はデータ セグメントに入りますが、初期化されたデータは bss セグメントに入ります。さらに、bss セグメントから 1 次スタックを割り当てることもできます。他のスレッド スタックは別の場所に割り当てられます。静的メンバーは、スタックが割り当てられているとは見なされません。

于 2013-09-15T06:13:14.407 に答える
2

静的メンバーを含む静的データは、データ セグメントに配置されます。sizeofしかし、オペレーターが静的メンバー変数のサイズをカウントしない のはなぜだと思いますか? sizeof変数の型のサイズを示します。

于 2013-09-15T06:15:26.833 に答える