2010-11-28 6 views
3

私のプログラムのbssセクションのメモリを実行したテストでは、何か書き込む前に常にゼロに初期化されています。これは偶然ですか、システムがこれらのメモリページを私に渡す前に「クリーニング」していますか?私はUbuntu上でnasmアセンブラを使用しています(おそらくそれが違いになります)。Linuxアセンブリ。 bssセクションのメモリが0に初期化されていますか?

答えて

3

アプリケーションの実行可能ファイル(ELF)は、起動時にBSSセクションのサイズ情報を持ち、カーネルがBSSセクションのメモリブロックを割り当て、0にクリーンアップします。これはABI(Application Binary Interface)あなたは別のマシンで異なることを心配する必要はありません。

+1

ありがとう、あなたの答えを使って:http://refspecs.linux-foundation.org/LSB_4.0.0/LSB-Core-generic/LSB-Core-generic/specialsections.html Linuxシステムでは、これはLinux標準ベースで指定されたように見えます。 – kasterma

0

はいBSSはゼロに初期化されます。

+0

標準的な*(小文字の意味)*の参照がありますか? –

+0

まあ、gccの人は、0に初期化された変数はBSSに置かれているので、BSSをゼロに初期化する必要があります。 – lijie

+1

@ T.J.Crowder、@Huang F. Leiの答えを使って、これに関するリファレンスが見つかりました。リファレンスはLinux Standard Baseです。具体的には、次のページを参照してください:http://refspecs.linux-foundation.org/LSB_4.0.0/LSB-Core-generic/LSB-Core-generic/specialsections.html – kasterma

関連する問題