Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4524108
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: C/C++

2011-05-13 19:05:45

1.未初始化的全局变量 .bss段
2.数据段 
    2.1 初始化过的全局变量 .data段
    2.2 常量数据 .rodata 端   read only
3.代码段 .text 段
4.栈 stack
5.堆 heap



1. bss 未初始化全局变量
   作为全局变量,在整个程序的运行周期内,bss数据是一直存在的。

      存放那些没有初始化或初始化为0的全局变量
      bss类型的全局变量只占运行时的内存空间,而不占用文件空间

在下面的程序中,文件空间为 7KB,而不是4MB多,
bss段数据,不占用文件空间,只占用运行时的内存空间
  1. #include <stdio.h>

  2. int arr[1024*1024];//未初始化的全局变量 bss段 4MB
  3. int main(int argc, char *argv[])
  4. {
  5.     return 0;
  6. }
  1. ywx@yuweixian:~/yu/professional/1$ ls -lh test
  2. -rwxr-xr-x 1 ywx ywx 7.0K 2011-05-13 19:00 test   #文件空间 7.0k
  3. ywx@yuweixian:~/yu/professional/1$ objdump -h test | grep bss
  4.  23 .bss 00400020 0804a020 0804a020 00001010 2** #占用内存空间4MB
  5. ywx@yuweixian:~/yu/professional/1$ objdump -h test | grep \\.data
     22 .data  00000008  0804a008  0804a008  00001008  2**2




2.数据段
  1. 初始化的全局变量 .data段

       data段,存放哪些初始化为非0值的全局变量
          data类型的全局变量是既占文件空间,又占用运行时的内存空间
      作为全局变量,在整个程序的运行周期内,data数据一直 存在的

  在初始化 arr后,变为 data段,文件空间大小变为 4.1MB
  1. #include <stdio.h>

  2. int arr[1024*1024]={1};   //初始化为非零全局变量
  3. int main(int argc, char *argv[])
  4. {
  5.     return 0;
  6. }
  1. ywx@yuweixian:~/yu/professional/1$ ls -lh test
  2. -rwxr-xr-x 1 ywx ywx 4.1M 2011-05-13 19:22 test
  3. ywx@yuweixian:~/yu/professional/1$ objdump -h test | grep bss
  4.  23 .bss 00000008 0844a040 0844a040 00401040 2**2
  5. ywx@yuweixian:~/yu/professional/1$ objdump -h test | grep \\.data
  6.  22 .data 00400020 0804a020 0804a020 00001020 2**5
 
    2.常量数据 .rodata段
       1. rodata是在多个进程共享的,这样可以提高运行时空间利用率
       2. 常量是不能修改的,修改常量在linux下会出现段错误  字符串常量
       3. 字符串会被编译器自动放到 rodata 中,其他数据要放到rodata中,只需要为其加 const 关键字

   

3.代码 .text 段

    text代码段存放代码(如:函数)和部分整数常量,与 rodata和相似。主要的区别是: text段是可以执行的。



4. 栈 stack
      栈存放临时变量和函数参数。

5. 堆 heap
     malloc
     remalloc
     free









阅读(728) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~