IT用語集 › プログラミング › BSSセグメント

BSSセグメント

プログラミング Svenska → 更新: 2026-11-03

ゼロで始まるグローバル変数や静的変数を置くメモリ領域。RAMは使うが、プログラムファイルの容量は使わない。

初期化子のないグローバル変数 int buffer[4096]; のために、16 KB 分のゼロを実行ファイルに格納する必要はない。コンパイラはこれを .bss に置き、ファイルにはセクションのサイズだけを記録する。ゼロ以外の初期値を持つ変数は .data に入り、こちらは中身を実際に配布しなければならない。

マイコンにはメモリをゼロクリアしてくれるOSがない。スタートアップコードが、リンカスクリプトで定義されたシンボル間の領域を main() の呼び出し前にゼロで埋める。これを忘れると、プログラムはRAMに残っていたゴミ値を抱えたまま始まる。ソフトウェアリセットの後にだけ現れがちな不具合だ。名前は1950年代の遺物で、IBM 704 のアセンブラの疑似命令 Block Started by Symbol に由来する。

← 用語集に戻る