在Linux 系统中,在运行一个程序时,程序中未初始化的全局变量会被加载到以下哪个内存段中?

BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点是:可读写的,在程序执行之前BSS段会自动清0。所以,未初始的全局变量在程序执行之前已经成0了。数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。堆(heap):堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)。栈(stack):栈又称堆栈, 是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进后出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。

Linux中的内存段(BSS、数据段、代码段、堆、栈)相关推荐

  1. 数据段描述符和代码段描述符(一)——《x86汇编语言:从实模式到保护模式》读书笔记10

    一.段描述符的分类 在上一篇博文中已经说过,为了使用段,我们必须要创建段描述符.80X86中有各种各样的段描述符,下图展示了它们的分类. 看了上图,你也许会说:天啊,怎么这么多段描述符啊!我可怎么记住 ...

  2. 数据段描述符和代码段描述符(二)——《x86汇编语言:从实模式到保护模式》读书笔记11

    这篇博文,我们编写一个C语言的小程序,来解析数据段或者代码段描述符的各个字段.这样我们阅读原书的代码就会方便一点,只要运行这个小程序,就可以明白程序中定义的数据段或者代码段的描述符了. 这段代码,我用 ...

  3. 一致代码段与非一致代码段

    首先,我们先来看几个问题: 一致代码段和非一致代码段是什么? 为什么要有一致代码段和非一致代码段? 系统提供怎样的机制来使用户程序访问内核数据? 程序如何在段与段之间跳转? 接下来,我们将讨论上述这些 ...

  4. 统一代码段与非一致代码段

    一致代码段与非一致代码段 上几篇文章,我们一直在讨论的都是 GDT 相关的一些问题,现在我们知道在系统在从实模式向保护模式跳转时,GDT 是必须要准备的结构.在介绍这一跳转之前,这篇文章我们来介绍两个 ...

  5. 16位代码段与32位代码段的区别

    16位代码段与32位代码段的区别: 16位代码段与32位代码段的区别如下: 16位代码段最长只能为64k,段内偏移量为16位,默认的指令地址及操作地址为16位:  32位代码段最长可以4G,段内偏移量 ...

  6. 特权级——保护模式的特权级检查 DPL,RPL,CPL, 一致代码段,非一致代码段

    特权级是保护模式下一个重要的概念,CPL,RPL和DPL是其中的核心概念,查阅资料无数,总结如下. 一.CPL.RPL.DPL简单解释     CPL是当前进程的权限级别(Current Privil ...

  7. CPL DPL RPL的区别 一致性代码段和非一致性代码段

    概述:在谈论保护模式编程的时候,一直会有这样的困惑:为什么除了CPL和DPL还有RPL?什么时候高特权级不能访问低特权级?什么时候低特权级不能访问高特权级?一致性代码和非一致性代码有什么区别?等等这些 ...

  8. 一致性代码段和非一致性代码段【转】

    一致代码段是内核开辟出来的供应用程序访问的段,但是不允许用户程序写入数据. CPL(Current Priviliege Level):它代表了当前代码段的特权等级,由CS和SS的第0位和第1位表示. ...

  9. 编写程序,使用一维数组,模拟栈数据结构。 要求: 1、这个栈可以存储java中的任何引用类型的数据。 2、在栈中提供push方法模拟压栈。(栈满了,要有

    代码 /*第一题:编写程序,使用一维数组,模拟栈数据结构.要求:1.这个栈可以存储java中的任何引用类型的数据.2.在栈中提供push方法模拟压栈.(栈满了,要有提示信息.)3.在栈中提供pop方法 ...

  10. Linux中一些有用而炫酷的代码

    Linux中一些有用而炫酷的代码 文章目录 Linux中一些有用而炫酷的代码 一.cal 1.当月的日历 2.近三个月的日历 3.一年的日历 二.yes 三.htop 四.fortune 五.scre ...

最新文章

  1. numpy使用[]语法索引二维numpy数组中指定行列位置的数值内容(access value at certain row and column in numpy array)
  2. asp.net初学习实现简单的增删改查功能
  3. oraclexe支持商用吗_商用车线控制动系统项目 技术研发
  4. linux php常用命令,php调用Linux系统常用命令
  5. 项目实施双机热备备忘
  6. iis6扩展php_windows2003server中iis6多版本php配置方法
  7. Windows XP解决显示桌面图标消失的问题
  8. 测试机器学习算法的好坏
  9. atitit.web 推送实现方案集合
  10. (转)如何看待美国监管机构要求文艺复兴基金提交源码?
  11. ps怎么更改背景图层大小_ps修改背景教程
  12. 复习笔记——物联网通信技术判断
  13. 模块化机房建设指导书_模块化机房建设方案
  14. 如何下载无水印的抖音视频?
  15. pytorch读取tif文件方法
  16. 思维模型:建立高品质思维的30种模型
  17. 郎平卸任后首次接受采访,说出执教8年的最大感受
  18. 查5G覆盖:中国联通客户端提供查询服务,快看你家门口有5G吗
  19. 分账系统价格表的构成你了解吗?
  20. 简易付安装后无法使用

热门文章

  1. oracle crf路径,说说 ora.crf 那些事
  2. springboot rabbitlistener注解_一文带你SpringBoot+RabbitMQ方式收发消息
  3. 企业微信添加机器人定时喊吃饭
  4. linux内核那些事之buddy(慢速申请内存__alloc_pages_slowpath)(5)
  5. 使用python将COCO格式的json文件转化为VOC格式的xml文件
  6. (STTN)Learning Joint Spatial-TemporalTransformations for Video Inpainting
  7. 苹果CMSV10绿色毛毛虫主题模板
  8. 雪花开发者中心地府云自适应1号模板 雪花xueidc插件
  9. 博客SEO文字转链接工具
  10. jsp里加java代码,利用静态内部类为您的代码添加辅助功能-JSP教程,Java技巧及代码...