关于a.out 理解

关于a.out 理解

部分文字参考 http://kensou.me/blog/?p=63

 ////最开始 运行size main

   text   data      bss    dec      hex filename

    913     264      72    1249     4e1 main

////////////////////////////////////////////////

在全局上 增加一个 data【1000】之后 bss 增加了4000

  text     data     bss     dec     hex filename

    913     264    4072    5249    1481 main

////////////////////////////////////////////////////

将 data【1000】 = {10};

   text    data     bss     dec     hex filename

    913    4312      72    5297    14b1 main

data段增加4048

//给全局变量赋值使数组data从BSS段移到了DATA段

//局部变量并不进入a.out,它们在运行时创建

// 如果只是在全局申明变量 文件大小是不会变的 只是bss 会改变 但要是 对全局数组

赋值的话 就会是文件的大小发生改变 并且bss 段不会增加 只会增加data 段

# include<stdio.h>

# include<stdlib.h>

char peer[40];

static double peach;

int mango = 13;

static long melon = 2011;

int data[1000] ;


int main()

{

        int i = 3,j,*ip;

        ip = malloc(sizeof(i));

        peer[5] = i;

        peach = 2.0 * mango;


        return 0;

}


你可能感兴趣的:(关于a.out 理解)