c程序的内存分布

2人阅读 评论(0) 收藏 举报
分类:
C程序由下面5部分组成:
  1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;
  2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。
  3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。
       4)栈——增长方向:自顶向下增长;自动变量以及每次函数调用时所需要保存的信息(返回地址;环境信息)。

  5)堆——动态存储区。是向高地址扩展的数据类型,是自下向上的扩展方式。c程序内存分布图


上面的C程序分布图很明显的告诉我们,变量是存储在栈区或者堆区或者bss段或者data段,变量的存储域为什么会有所不同呢?其实原因很简单,说白了就是与他们定义在程序的不同地方,有没有static关键字修饰有关啦,定义在不同的地方也说明了他们有着不同的作用域。

查看评论

微信小程序项目实战

-
  • 1970年01月01日 08:00

C/C++进程内存的分布

内存分布只要分为五部分: text(文本段),initialize data(数据段),uninitialized data(为初始化数据段),heap(堆),stack(栈), 如下图: ...
  • qq_26685951
  • qq_26685951
  • 2017-08-08 17:16:24
  • 668

C语言变量内存分布

1.   首先,看一下内存中的分区情况: ①堆区 : 一般由程序员手动分配释放 , 若程序员不释放,程序结束时将由OS回收。 ②栈区:由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操...
  • wzxq123
  • wzxq123
  • 2016-05-21 18:54:40
  • 1241

典型C内存空间分布图

典型C内存空间分布图 bss段,data段,代码段(.text),堆(heap),栈(stack)...
  • czg13548930186
  • czg13548930186
  • 2017-02-05 20:27:45
  • 973

linux 下C程序内存分布

先问大家个问题,在linux下,对于C源程序到可执行文件的过程大家清楚吗?还有一个可执行文件是怎样运行的?        一 源文件到可执行文件的过程如下:      源程序----...
  • b5w2p0
  • b5w2p0
  • 2014-09-26 15:51:48
  • 1205

c语言代码运行时的内存分布结构

当执行一个可执行文件中运行size命令是,系统会显示文件中三个段的大小(text、data和bss段),即代码段、数据段、和bss段。   BSS段:在采用段式内存管理的架构中,BSS段(bss se...
  • wpb_blind
  • wpb_blind
  • 2015-08-26 09:12:48
  • 1313

C语言内存空间分布详解

BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。 数据段:数据...
  • gzg1500521074
  • gzg1500521074
  • 2016-01-01 14:31:53
  • 2027

C/C++中程序内存区域划分大总结

程序由代码和数据组成,其中代码存储在代码区中,数据根据类型的不同存储在不同的区域中。本文分别介绍了C和C++中内存区域的划分。 C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程...
  • derkampf
  • derkampf
  • 2016-03-28 19:24:05
  • 4479

以C程序为例的内存分布详解

附程序分布图: 程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方...
  • wk799315320
  • wk799315320
  • 2014-08-07 16:52:24
  • 250

例解C程序的内存分布

  • 2009年04月22日 08:23
  • 54KB
  • 下载
    个人资料
    持之以恒
    等级:
    访问量: 6499
    积分: 1772
    排名: 2万+
    文章存档
    最新评论