リンカ・ローダと実行形式
Linuxなどの一般的なプロセスのメモリ配置を、番地の小さい方から並べたものとして正しいものはどれか。
- Aテキスト → データ → BSS → ヒープ → (空き) → スタック
- Bスタック → テキスト → ヒープ → データ → BSS
- Cヒープ → スタック → BSS → データ → テキスト
答えと解説を見る
正解:A. テキスト → データ → BSS → ヒープ → (空き) → スタック
典型的な配置では、番地の小さい側から機械語のテキスト、初期値のあるデータ、0で始まるBSSが並び、その上にヒープが番地の大きい方へ伸びます。スタックは番地の大きい側から小さい方へ伸び、両者の間の広い空き領域に共有ライブラリやmmapの領域が置かれます。実際の番地は、安全のためASLRによって実行のたびにずらされます。
- A. 正しい。ヒープは上へ、スタックは下へ伸びます。
- B. スタックは番地の大きい側に置かれます。
- C. テキストは番地の小さい側に置かれます。