0
Cでグローバル初期化されていない変数を宣言すると、それが.bssセグメントに存在することがわかります。しかし、あなたがその価値を持ち、それを関数の中の何かに等しくするとどうなりますか?スタックセグメントに移動しますか?グローバル変数のメモリレイアウトを初期化する
Cでグローバル初期化されていない変数を宣言すると、それが.bssセグメントに存在することがわかります。しかし、あなたがその価値を持ち、それを関数の中の何かに等しくするとどうなりますか?スタックセグメントに移動しますか?グローバル変数のメモリレイアウトを初期化する
正確な位置にとどまります。あなたはその価値を変えたばかりです。 bss
セクションは、デフォルトでグローバル変数がゼロに初期化されているため、実行ファイルに直接変数を含めると(ディスク)スペースが浪費されるためです。プログラムの初期化後、変数bss
はゼロ以外の値を持つことができます。