4

私の知る限り、Cプログラムのセグメンテーションは次のとおりです。

        High address
|---------------------------|
|env/cmd line args vars     |
|---------------------------|
|      stack segment        |--> uninitialized auto vars
|---------------------------|
|---------------------------|
|---------------------------|
|      heap segment         |--> dynamic allocated memory
|---------------------------|
|      BSS segment          |--> uninitialized static/global vars
|---------------------------|
|      data segment         |--> initialized static/global vars
|---------------------------|
|      text segment         |--> initialized auto vars/exec instructions
|---------------------------|
        Low address

私のRHEL 5.4 64ビットマシンでは、以下のcプログラム用

#include <stdio.h>
int main()
{
}

私がする時:

# size a.out
   text    data     bss     dec     hex filename
   1259     540      16    1815     717 a.out

なぜなのか理解できません

BS=16

グローバル/静的変数を宣言/初期化していないので?

4

1 に答える 1