Chinaunix首页 | 论坛 | 博客
  • 博客访问: 307290
  • 博文数量: 63
  • 博客积分: 1482
  • 博客等级: 上尉
  • 技术积分: 1185
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-12 19:06
个人简介

hello world!

文章分类

全部博文(63)

分类: C/C++

2012-08-10 16:25:45

C程序的存储空间布局

     从历史上讲,C程序一直是由下面几部分组成:

    1)    正文段:这是由CPU执行的机器指令部分。通常,正文段是可共享的,所以即使是频繁的执行的程序(如文本编辑器、C编译器和shell等)在存储器中也只需要有一个副本而已,另外,正文段常常是只读的,以防止程序由于意外而修改其自身的指令。

    2)    初始化数据段:也称为数据段,它包含了程序中需要明确地赋初始值的变量。例如,C程序中出现在任何函数之外的声明,如:int maxcount=99

    3)    非初始化数据段:通常将段称为bss段,在程序开始执行之前,内核将此段中的数据初始化为0或者空指针如:long sun[100]

    4)    栈:自动变量,以及每次函数调用时所需保存的信息都存在此段中。每次调用函数时,其返回地址以及调用者的环境信息都存放在栈中。然后,最后被调用的函数在栈上为其自动和临时变量存储空间。

    5)    堆:通常在堆中进行动态存储。



 

              

 

 

 

 

 

 

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