【基础知识】BSS段,数据段,代码段,堆栈段
在了解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段,数据段,代码段,堆栈段相关推荐
- python必备基础代码-新手上路必学的Python函数基础知识,全在这里了(多段代码举例)...
原标题:新手上路必学的Python函数基础知识,全在这里了(多段代码举例) 导读:函数是Python中最重要.最基础的代码组织和代码复用方式.根据经验,如果你需要多次重复相同或类似的代码,就非常值得写 ...
- 扎实的基础知识、高质量的代码
扎实的基础知识.高质量的代码.清晰的思路.优化代码的能力.优秀的综合能力是编程技术面试的五大要点. 找工作一直是一个热门话题.要想找到心仪的工作,难免需要经过多轮面试.编程面试是程序员面试过程中最为重 ...
- RGB、YUV像素基础知识及处理数据
RGB.YUV像素基础知识及处理数据 目录 RGB YUV RGB.YUV像素数据处理 转载自Gemfield的知乎文章:从YUV到RGB 转载自雷神的博客:视音频数据处理入门:RGB.YUV像素数据 ...
- 第二篇 python基础知识总结:数据、运算符
引子 我们跟任何人交流,说的每一句都是都一些文字组成,包含名词.动词.语句.标点符号等,组成我们说普通话构成的基本要素.同理我们学习python语言也要明白这些基本要素,也就是我们常说的基本语法,这是 ...
- SQL Server 索引基础知识 1 --- 记录数据的基本格式
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 由于需要 ...
- SQL Server 索引基础知识(1)--- 记录数据的基本格式
不论是缓存的数据信息,还是物理保存的信息,他们的基本单位都是数据页.所以理解数据页是最最基础的知识点,本篇博客就介绍跟索引有关的数据页的一些基础知识. 数据页的基础知识 SQL Server 中数据存 ...
- masm汇编语言堆栈段定义了却提示无堆栈段
看王爽<汇编语言>的时候,发现加了堆栈段仍然显示没有堆栈段 这样改了之后就可以了 stack segment stackdw 0,0,0,0,0,0,0,0 stack ends 参考文章 ...
- 新手上路必学的Python函数基础知识,全在这里了(多段代码举例)
导读:函数是Python中最重要.最基础的代码组织和代码复用方式.根据经验,如果你需要多次重复相同或类似的代码,就非常值得写一个可复用的函数.通过给一组Python语句一个函数名,形成的函数可以帮助你 ...
- python装饰器代码简洁_Python基础知识之装饰器(示例代码)
装饰器 https://www.cnblogs.com/EVA-J/articles/7194277.html 1. 装饰器的形成过程 2.装饰器的作用 3.语法糖 原则: 开放封闭原则 ------ ...
- 【三维重建】三维重构基础知识、三维数据、重建流程
文章目录 1.在计算机内生成三维信息 三维图像重构: 四个坐标系 坐标系转换 内参矩阵 外参矩阵 图像采集设备的标定方法: 2.相关概念 (1)彩色图像和深度图像 (2)PCL (3)点云数据(PCD ...
最新文章
- 用Python构建网页抓取器
- 适合于小团队产品迭代的APP测试流程
- Ubuntu之镜像iso安装系统
- android studio设计模式和文本模式切换
- TensorFlow构建二维数据拟合模型(3)
- ToF是否是噱头?小米王腾发长文详解...
- 敏捷开发免费管理工具——火星人预览之四:故事板,燃尽图,我的工作项
- 编译器和解释器(Compiler and Interpreter)
- 又一程序员删库跑路,只不过他没跑掉,还被抓了~
- 【Andriod Studio实现拨打电话和发送短信功能】
- 南大计算机专业课表,南大课程表
- 【论文阅读】SyncPerf: Categorizing, Detecting, and Diagnosing Synchronization Performance Bugs
- Android Studio出现APP闪退问题(My Application keeps stopping)
- 春招艰难?给你几条应届生的求职建议!
- C++运算符重载典型习题---复数类 String类 分数类
- mysql如何插入图片和视频_mysql中怎样插入图片
- vue配置favicon.ico图标
- mp4转换成gif怎么转?
- vue 的computed和watch在什么时候触发
- 第一课:路由器宽带拨号入网(小米路由器)
热门文章
- (论文阅读)NMS by Representative Region: Towards Crowded Pedestrian Detection by Proposal Pairing
- 声声入耳:音频新体验
- OSChina 周三乱弹 —— 生活终于对我这只小猫咪动手啦
- AGV的关键技术与细节
- ArrayList.toArray(T[] a) 的说明
- Java实现回文串的四种方式
- mybatis-plus和mysql
- ResNet家族:ResNet、ResNeXt、SE Net、SE ResNeXt
- Spring|Spring事务管理
- Linux多线程(线程互斥与线程锁)