在了解BSS段他们之前,我们先来看一下他们在内存中的位置

BSS段(bss segmen)

BSS 是 Block Started by Symbol 的简称,通常是指用来存放程序中未初始化全局变量的内存区域,属于静态内存分配,在可执行文件中,由系统从可执行文件中加载。

在初始化时 BSS 段部分将会清零。BSS 段属于静态内存分配,即程序一开始就将其清零了。并且BSS段不给该段的数据分配空间,只是记录数据所需空间的大小。

数据段(data segment)

data段是指用来存放程序中已初始化全局变量的内存区域,属于静态内存分配,在可执行文件中。

代码段(code segment)

又称文本段(text segment),是指用来存放程序执行代码的一块内存区域,这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读,也有可能包含一些只读的常数变量,例如字符串变量等。

堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。

  • 当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);
  • 当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)。

栈又称堆栈,是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进后出特点,所以栈特别方便用来保存/恢复调用现场。

从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。它是由操作系统分配的,内存的申请与回收都由OS管理。

【基础知识】BSS段,数据段,代码段,堆栈段相关推荐

  1. python必备基础代码-新手上路必学的Python函数基础知识,全在这里了(多段代码举例)...

    原标题:新手上路必学的Python函数基础知识,全在这里了(多段代码举例) 导读:函数是Python中最重要.最基础的代码组织和代码复用方式.根据经验,如果你需要多次重复相同或类似的代码,就非常值得写 ...

  2. 扎实的基础知识、高质量的代码

    扎实的基础知识.高质量的代码.清晰的思路.优化代码的能力.优秀的综合能力是编程技术面试的五大要点. 找工作一直是一个热门话题.要想找到心仪的工作,难免需要经过多轮面试.编程面试是程序员面试过程中最为重 ...

  3. RGB、YUV像素基础知识及处理数据

    RGB.YUV像素基础知识及处理数据 目录 RGB YUV RGB.YUV像素数据处理 转载自Gemfield的知乎文章:从YUV到RGB 转载自雷神的博客:视音频数据处理入门:RGB.YUV像素数据 ...

  4. 第二篇 python基础知识总结:数据、运算符

    引子 我们跟任何人交流,说的每一句都是都一些文字组成,包含名词.动词.语句.标点符号等,组成我们说普通话构成的基本要素.同理我们学习python语言也要明白这些基本要素,也就是我们常说的基本语法,这是 ...

  5. SQL Server 索引基础知识 1 --- 记录数据的基本格式

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 由于需要 ...

  6. SQL Server 索引基础知识(1)--- 记录数据的基本格式

    不论是缓存的数据信息,还是物理保存的信息,他们的基本单位都是数据页.所以理解数据页是最最基础的知识点,本篇博客就介绍跟索引有关的数据页的一些基础知识. 数据页的基础知识 SQL Server 中数据存 ...

  7. masm汇编语言堆栈段定义了却提示无堆栈段

    看王爽<汇编语言>的时候,发现加了堆栈段仍然显示没有堆栈段 这样改了之后就可以了 stack segment stackdw 0,0,0,0,0,0,0,0 stack ends 参考文章 ...

  8. 新手上路必学的Python函数基础知识,全在这里了(多段代码举例)

    导读:函数是Python中最重要.最基础的代码组织和代码复用方式.根据经验,如果你需要多次重复相同或类似的代码,就非常值得写一个可复用的函数.通过给一组Python语句一个函数名,形成的函数可以帮助你 ...

  9. python装饰器代码简洁_Python基础知识之装饰器(示例代码)

    装饰器 https://www.cnblogs.com/EVA-J/articles/7194277.html 1. 装饰器的形成过程 2.装饰器的作用 3.语法糖 原则: 开放封闭原则 ------ ...

  10. 【三维重建】三维重构基础知识、三维数据、重建流程

    文章目录 1.在计算机内生成三维信息 三维图像重构: 四个坐标系 坐标系转换 内参矩阵 外参矩阵 图像采集设备的标定方法: 2.相关概念 (1)彩色图像和深度图像 (2)PCL (3)点云数据(PCD ...

最新文章

  1. 用Python构建网页抓取器
  2. 适合于小团队产品迭代的APP测试流程
  3. Ubuntu之镜像iso安装系统
  4. android studio设计模式和文本模式切换
  5. TensorFlow构建二维数据拟合模型(3)
  6. ToF是否是噱头?小米王腾发长文详解...
  7. 敏捷开发免费管理工具——火星人预览之四:故事板,燃尽图,我的工作项
  8. 编译器和解释器(Compiler and Interpreter)
  9. 又一程序员删库跑路,只不过他没跑掉,还被抓了~
  10. 【Andriod Studio实现拨打电话和发送短信功能】
  11. 南大计算机专业课表,南大课程表
  12. 【论文阅读】SyncPerf: Categorizing, Detecting, and Diagnosing Synchronization Performance Bugs
  13. Android Studio出现APP闪退问题(My Application keeps stopping)
  14. 春招艰难?给你几条应届生的求职建议!
  15. C++运算符重载典型习题---复数类 String类 分数类
  16. mysql如何插入图片和视频_mysql中怎样插入图片
  17. vue配置favicon.ico图标
  18. mp4转换成gif怎么转?
  19. vue 的computed和watch在什么时候触发
  20. 第一课:路由器宽带拨号入网(小米路由器)

热门文章

  1. (论文阅读)NMS by Representative Region: Towards Crowded Pedestrian Detection by Proposal Pairing
  2. 声声入耳:音频新体验
  3. OSChina 周三乱弹 —— 生活终于对我这只小猫咪动手啦
  4. AGV的关键技术与细节
  5. ArrayList.toArray(T[] a) 的说明
  6. Java实现回文串的四种方式
  7. mybatis-plus和mysql
  8. ResNet家族:ResNet、ResNeXt、SE Net、SE ResNeXt
  9. Spring|Spring事务管理
  10. Linux多线程(线程互斥与线程锁)