0

bss セグメントには、初期値として 0 が与えられる初期化されていない変数が含まれていることはわかっていますが、データ セグメントを使用してそれらを保存しないのはなぜですか?

OSローダーがmemsetを呼び出してこれらすべての変数を一度に初期化するため、実行が高速化されると読みましたが、ローダーはmemsetを呼び出してデータセグメントでも初期化できるため、あまり確信が持てません!

4

1 に答える 1

2

初期化されていない値が大量にある可能性があるためです。その目的でデータセクションを使用する場合は、バイナリをゼロで埋める必要があります (または任意の値ですが、何かがそこにある必要があります)。実行可能ファイルにメガバイトのゼロを追加することを想像してみてください...

于 2012-01-20T08:01:20.743 に答える