进程内存布局(Linux Memory Layout of a C Program)

> text segment :这是由 C P U执行的机器指令部分

> Initialized data segment : 通常将此段称为数据段,它包含了程序中需赋初值的变量。例如, C程序中任何函数之外的说明: 

int maxcount = 99;

> Uninitialized data segment : 通常将此段称为 b s s段,这一名称来源于早期汇编程序的一个操作符,意思是“block started by symbol(由符号开始的块)”,在程序开始执行之前,内核将此段初始化为0。函数外的说明:

long sum[1000] ;

使此变量存放在非初始化数据段中。

> Stack(栈) : 自动变量以及每次函数调用时所需保存的信息都存放在此段中。每次函数调用时,其返回地址、以及调用者的环境信息(例如某些机器寄存器)都存放在栈中。然后,新被调用的函数在栈上为其自动和临时变量分配存储空间。通过以这种方式使用栈, C函数可以递归调用

> Heap(堆) : 通常在堆中进行动态存储分配。由于历史上形成的惯例,堆位于非初始化数据段顶和栈底之间。



s i z e ( 1 )命令报告正文段、数据段和 b s s段的长 单位(字节)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • C语言中内存分配 在任何程序设计环境及语言中,内存管理都十分重要。在目前的计算机系统或嵌入式系统中,内存资源仍然是...
    一生信仰阅读 4,938评论 0 2
  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,688评论 8 114
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 12,385评论 0 27
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,470评论 11 349
  • 倒计时前,愈在乎,就愈紧张,就越想假装镇定,越要表现波澜不惊,害怕预期与实际不符。
    莫说了阅读 1,618评论 0 2