首页 > 其他 > 详细

C程序的存储空间布局

时间:2014-02-19 18:23:01      阅读:332      评论:0      收藏:0      [点我收藏+]

C程序在内存中由以下几部分组成:

  • 正文段:这是由CPU执行的机器指令部分,通常情况下,正文段是可以共享的,子进程和父进程会共同维护内存中的一个副本;另外,正文段一般也是只读的,以防止程序由于意外而修改其本身;同时其中包含了只读的常量,比如字符串常量等。
  • 初始化数据段,即数据段:它包含了程序中已初始化的全局变量,属于静态分配内存;
  • 非初始化数据段,即bss段:这个名称来源于早期汇编程序的一个操作符,意思是“block started by symbol(由符号开始的块)”,属于静态内存分配。在程序开始执行之前,内核将此段初始化为0;
  • 栈:自动变量以及每次函数调用时所需保存的信息都存放在此段中。借此,有了C语言的递归调用。
  • 堆:堆中进行的是动态内存分配。例如使用malloc函数;

下图显示了这些段的一种典型安排方式

bubuko.com,布布扣

可见,磁盘程序文件中只有正文段和初始化数据段,未初始化数据段不会在磁盘程序文件中出现。

size命令可以查看可执行程序的正文段、数据段和bss段的长度(单位:字节),其中4列和5列分别是以十进制和十六进制表示的总长度。

bubuko.com,布布扣

C程序的存储空间布局

原文:http://www.cnblogs.com/thinker-lj/p/3555157.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!