Chinaunix首页 | 论坛 | 博客
  • 博客访问: 390003
  • 博文数量: 107
  • 博客积分: 2536
  • 博客等级: 少校
  • 技术积分: 781
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-14 15:19
文章分类

全部博文(107)

文章存档

2017年(11)

2016年(8)

2015年(14)

2014年(32)

2012年(1)

2011年(1)

2010年(7)

2009年(33)

我的朋友

分类: 嵌入式

2014-03-21 11:38:49

程序编译后生成的目标文件至少含有三个段,分别为:.text、.data和.bss。

这三个段的大致结构图如所示:






其中.text即为代码段,为只读。.bss段包含程序中未初始化的全局变量和static变量。

data段包含三个部分:heap(堆)、stack(栈)和静态数据区。

当程序在执行时动态分配空间(C中的malloc函数),所分配的空间就属于heap。其概念与数据结构中“堆”的概念不同。

stack段存放函数内部的变量、参数和返回地址,其在函数被调用时自动分配,访问方式就是标准栈中的LIFO方式。(因为函数的局部变量存放在此,因此其访问方式应该是栈指针加偏移的方式,否则若通过push、pop操作来访问相当麻烦)

data段中的静态数据区存放的是程序中已初始化的全局变量、静态变量和常量。



阅读(420) | 评论(0) | 转发(0) |
0

上一篇:C# 之泛型详解

下一篇:linux 命令

给主人留下些什么吧!~~