bss段、data段、text段、heap堆、stack栈的基本概念

1. bss段

bss段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。bss是英文Block Started by Symbol的简称。bss段属于静态内存分配。

2. data段

数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。

3. text段

代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读(某些架构也允许代码段为可写,即允许修改程序)。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。

4. heap堆

heap堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)。

5. stack栈

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

6. 存储

text和data段都在可执行文件中(在嵌入式系统里一般是固化在镜像文件中),由系统从可执行文件中加载;而bss段不在可执行文件中,由系统初始化。

全局的未初始化变量存在于.bss段中,具体体现为一个占位符;

全局的已初始化变量存于.data段中;

函数内的自动变量都在栈上分配空间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1124884.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SRC 挖洞赚钱实测】单高危漏洞 2W+!低中高危赏金拆解,挖漏洞平均日收入算给你看

一个漏洞奖励2w,这是真实的嘛! 我入行网安这些年也一直在接私活,副业赚的钱几乎是我工资的三倍!看到最近副业挖漏洞的内容非常火爆,我便决定将自己的经验分享出来,带我的粉丝们一起挣钱! 注意…

破防了!Java 卷到月薪 8K,转网安直接年薪 40 万 +,2025 自救路线图全公开!

从卷Java到冲网安:计算机人2025自救路线图(附安全岗年薪40-150万) 只要你敢学我就敢教!500集黑客入狱教程,从入门到入狱!全程干货无废话,学不会我退网! 计算机专业未来发展全景图&…

抗干扰更强!8路PWM输出模块:隔离RS485/CAN通讯+占空比精准调节

8路PWM脉冲输出模块,是一种集成化的工业控制/电子接口模块,其核心功能是同时提供8组独立或可同步的、可编程的PWM(脉冲宽度调制)脉冲信号输出。通过内置的控制核心、定时单元和功率驱动电路,将外部控制器(PLC、工控机、单片机、云平台)的指令…

多元场景通吃的秘密!8路PWM输出模块——集中控制+独立调节,双重模式更灵活

8路PWM脉冲输出模块的核心价值在于多通道独立/同步的占空比、频率可调控制,能同时驱动8路执行器实现调速、调光、调压、调力等精准控制。结合工业自动化、物联网、智能装备等领域的实际需求,其典型应用场景可分为以下8大类,覆盖从工业核心设备…

副业封神!挖 SRC 漏洞一个就赚 2W+,网安人轻松躺赚,平均日收入看完馋哭了!

一个漏洞奖励2w,这是真实的嘛! 我入行网安这些年也一直在接私活,副业赚的钱几乎是我工资的三倍!看到最近副业挖漏洞的内容非常火爆,我便决定将自己的经验分享出来,带我的粉丝们一起挣钱! 注意…

2026年六大GEO优化公司能力测评:技术纵深决定AI搜索霸权

2026年,生成式AI已占据用户决策链的核心节点。QuestMobile数据显示,中国AI搜索用户规模突破4.2亿,用户日均通过DeepSeek、文心一言、Kimi等平台发起超过2.8亿次商业类提问。当"新能源车怎么选""智能家居品牌推荐"这类问题…

在Windows上编译、安装Rust

你想知道在Windows系统上安装Rust编程语言的具体方法,我会为你提供官方推荐、新手友好的完整步骤,包括前置依赖、安装操作和验证方法,确保你能顺利完成安装。 一、前置准备(关键!避免后续编译报错) Rust在W…

救命!失业党狂喜!零成本学网安 3 个月,避开万元培训班,月薪 12K 成功逆袭!

失业 3 个月投了 127 份简历?别卷了!我靠网安转行月薪 12K,附 3 个月零成本入门攻略 去年被裁那天,我盯着招聘软件上 “35 岁以下优先” 的字样,把简历里的 “5 年行政经验” 改了又改,结果投出去的 127 份…

艾莉丝努力练剑的256天创作纪念日:在代码星河中逐梦前行

🔥艾莉丝努力练剑:个人主页 ❄专栏传送门:《C语言》、《数据结构与算法》、C/C干货分享&学习过程记录、Linux操作系统编程详解、笔试/面试常见算法:从基础到进阶、测试开发要点全知道 ⭐️为天地立心,为生民立命…

pycocotools绘制标注结果(bbox,segment,pose)

博主提供docker开发镜像(主要面向深度学习、计算机视觉和机器人开发等需要 GPU 支持的场景)用于测试所有博客用例代码,下载地址(ubuntu24_cux_dev)[https://wilson.blog.csdn.net/article/details/156309082] 以下是一个基于 pycocotools 开发的 Python 函数&#x…

深度测评9个AI论文工具,助本科生轻松搞定毕业论文!

深度测评9个AI论文工具,助本科生轻松搞定毕业论文! AI 工具如何改变论文写作的未来 随着人工智能技术的飞速发展,越来越多的本科生开始借助 AI 工具来辅助完成毕业论文。这些工具不仅能够帮助学生高效地完成内容生成、结构搭建,还…

2025 Java 转网安必看:从技能迁移到岗位选择,附 40-150 万安全岗薪资拆解!

从卷Java到冲网安:计算机人2025自救路线图(附安全岗年薪40-150万) 只要你敢学我就敢教!500集黑客入狱教程,从入门到入狱!全程干货无废话,学不会我退网! 计算机专业未来发展全景图&…

从0到1讲解什么是JVM:Java程序员必须掌握的核心知识(附Spring Boot实战案例)

视频看了几百小时还迷糊?关注我,几分钟让你秒懂!一、什么是JVM?小白也能听懂的解释JVM(Java Virtual Machine),中文叫 Java虚拟机,是运行Java程序的“发动机”。 你写的 .java 文件&…

满足成本与性能双重要求:AWS中为访问私有子网EC2的Lambda实施优化方案

一家公司使用 Amazon EC2 实例和 AWS Lambda 函数来运行其应用程序。该公司在其 AWS 账户中拥有包含公共子网和私有子网的 VPC。EC2 实例在其中一个 VPC 的私有子网中运行。Lambda 函数需要直接网络访问 EC2 实例以使应用程序工作。 该应用程序将运行至少 1 年。公司预计在此期…

网安小白狂喜!Web 安全入门指南:OWASP Top 10 + 漏洞实战,收藏这篇就够了!

Web 安全入门:从 OWASP Top 10 到常见漏洞 解构 Web 安全威胁图谱:从 OWASP Top 10 到典型攻击,筑牢数字防线 在 Web 应用成为业务核心载体的今天,安全漏洞已成为威胁数据隐私、业务稳定的 “隐形炸弹”。从 OWASP Top 10 划定的…

Spring循环依赖:原理、限制与解决方案深度解析

一、循环依赖的定义与本质在Spring框架中,循环依赖指的是两个或多个Bean之间存在直接或间接的相互引用关系,从而形成一个闭合的依赖环。简而言之,当BeanA依赖BeanB,同时BeanB也依赖BeanA时,便构成了典型的循环依赖。代…

并发编程中的CAS机制:原理、实现与应用剖析

在并发编程领域,确保线程安全通常首先会联想到加锁机制,如synchronized或ReentrantLock。虽然加锁是直观且广泛采用的方案,但在高并发场景下,锁带来的性能开销——如上下文切换、内核态切换及线程阻塞——可能成为系统瓶颈。为此&…

挖到宝了!专本科网安自学指南:不看学历,少走 2 年弯路,评论区蹲资料的来!

目录 前言自学网安第一阶段:打牢基础 学习这些基础知识有什么用呢? 第二阶段:化整为零 学习建议 第三阶段:实战演练 实践技巧 第四阶段:找准定位 深入学习建议学习要避开的弯路自学失败的原因有很多 最后:…

想做项目经理之前,这几件事你最好先想清楚

年底,很多人开始认真考虑职业走向的问题。“现在这条路,真的要一直走下去吗?”有人在项目经理岗位上开始动念: 要不要换个环境?是不是公司问题? 也有人是技术开发出身,看着身边的 PM&#xff0c…

进程的创建——如何理解fork()系统调用

进程的创建前言前置知识补充(重要)pid_t 的本质父进程和子进程exit(0) & break & continue辨析1. 核心区别对比表2. 逐个拆解(附代码例子)(1)exit(0):结束“整个程序”(2&am…