C语言内存分区

news2025/8/13 22:20:27

本文参考详细讲解C语言五大内存分区与可执行程序的三段(Text段、Date段、Bss段)【建议收藏】 - 知乎

一、C语言内存分区

1.栈区(stack):存放函数形参和局部变量,由编译器自动分配和释放

2.堆区(heap):该区由程序员申请后使用,需要手动释放否则会造成内存泄漏。如果程序员没有手动释放,那么程序结束时可能由操作系统回收

3.全局/静态存储区:存放全局变量和静态变量(包括静态全局变量与静态局部变量),初始化的全局变量与静态局部变量放在一起(data段),未初始化的放在一起(bss段)。

4.文字常量区:常量在统一运行时被创建,常量区的内存是只读的,程序结束后由系统释放。

5.程序代码区: 存放程序的二进制代码,内存由系统管理。(4、5为text段)

  • text 和 data 段都在可执行文件中,由系统从可执行文件中加载;
  • 而 bss 段不在可执行文件中,由系统初始化。

二、 可执行程序程序三段-Text段,Date段,Bss段

 

  • text段在内存中被映射为只读,但date段与bss段是可写的
  • text段:代码段,就是放程序代码的,编译时确定,只读
  • date段:存放在编译阶段(而非运行时)就能确定的数据,可读可写。也就是通常所说的静态存储区,赋了初值的全局变量和赋初值的静态变量存放在这个区域,常量也存在这个区域
  • bss段:已经定义但没赋初值的全局变量和静态变量存放在这个区域。

两者之间区别是:代码段,数据段,堆栈段是cpu级别的概念,五大分区属于语言级别的概念,两者是不同的概念。

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

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

相关文章

mysql-4-锁机制

1 场景 库存等 共享资源等。 都需要锁,大量并发下,防止库存超卖等现象产生。 2分类 分类 1:(读,写)锁:对数据操作的类型分类 2: 对数据操作的粒度分 行锁,表锁 读写锁 读锁(共享锁)&#xff1a…

ISCSLP 2022 | NPU-ASLP实验室8篇论文被录用

作为语音处理技术领域的旗舰国际会议,ISCSLP2022(International Symposium on Chinese Spoken Language Processing)将于12月11-14日在新加坡举办。 西工大音频语音与语言处理研究组(ASLPNPU)本届会议将携合作伙伴宣读论文8篇,涉…

MCE | 曲贝替定——来自海洋的抗软组织肿瘤化合物

目前,常用于 STS 的化疗药物为蒽环类药物如阿霉素 (ADM)、异环磷酰胺(IFO) 、环磷酰胺 (CTX) 、顺铂 (DDP) 等。但是,为了解决部分患者不适合利用蒽环类和酰胺类药物治疗,或利用这些药物治疗无效的问题,仍需寻找新的药物治疗方案。…

用gdb调试有问题的程序:练习使用gcc编译器和gdb调试器

内容 1.用gdb调试有问题的程序:练习使用gcc编译器和gdb调试器; 2.练习使用make工程管理器。 实操流程: (1)编制greet.c文件。 此代码的原意为倒序输出main函数中定义的字符串,但…

JNDI注入的理解、JDK给出的修复

RMI RMI(Remote Method Invocation):一种执行远程调用的Java API。RMI的目的是使在不同计算机上运行的对象(Object)之间的调用行为类似于本地调用。 RMI机制:服务器(Server)应实现一定的功能并将其注册到注册表(Registry)中,客户端(Client)应在注册表的命名空间(Naming spac…

RabbitMQ入门教程(安装,管理插件,Publisher/Consumer/交换机/路由/队列/绑定关系,及如何保证100%投递等)

RabbitMQ入门教程(安装,管理插件,Publisher/Consumer/交换机/路由/队列/绑定关系,及如何保证100%投递等) 1. RabbitMQ简介及AMQP协议 开源的消息代理和队列服务器。基于AMQP(Advanced Message Queuing Pr…

矢量网络分析仪如何校准?安泰测试来助力

要想学会测试, 首先要学会校准! 对矢量网络分析仪的校准是非常重要的一个步骤,能够提高仪器的测量精度。今天安泰测试就给大家分享一下矢量网络分析仪的校准操作步骤: 一、单端口校准 校准目的: 通过单端口校准可以消除该端口的反射跟踪误差、…

[附源码]SSM计算机毕业设计教学辅助系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

双层神经网络实现非线性回归——机器学习

目录 一、算法思想 二、算法原理 三、算法分析 四、源程序代码 五、运行结果及分析 一、算法思想 在两层神经网络之间,必须有激活函数连接,从而加入非线性因素,提高神经网络的能力。所以,我们先从激活函数学起,一类…

线代——求逆矩阵的快捷方法

通常,求逆矩阵有两种方法: 方法一: 方法二: 但是,对于特殊矩阵,如: 1、二阶矩阵 A[abcd]A \begin{bmatrix} a & b\\ c & d \end{bmatrix}A[ac​bd​],其逆矩阵 A−11ad−bc[d−b−ca…

FienReport在线报表工具-大数据集导出示例

前言 在企业管理中,报表可以以图表等简洁的方式向用户显示数据,从而提高工作效率。许多公司紧跟信息技术的潮流,已经应用了报表软件工具。“我们企业想用一个报表工具,你有推荐吗?”这是这两年被问到最多的问题&#…

MySQL 进阶 怎么去了解MySQL的架构原理

前言 在了解 MySQL 原理之前,对我而言 MySQL 就是一个黑盒子,我写的SQL 语句通过服务发送给 MySQL 数据库,然后数据库就执行 SQL 语句,返回一些查询结果或做一些操作。然后就没然后了。。。再深入一点,就是知道某些 S…

机器学习-聚类算法

机器学习-基础知识 机器学习-线性回归 机器学习-逻辑回归 机器学习-聚类算法 机器学习-决策树算法 机器学习-集成算法 机器学习-SVM算法 文章目录聚类算法1. K-Means算法1.1. 理论基础1.2. 具体代码1.2.1. 数据集1.2.2. 自定义k-means算法类1.2.3. 测试模块1.3. 效果展示1.3.1.…

Flink 多流转换

多流转换分流使用侧输出流基本合流操作联合(Union)连接(Connect)基于时间的合流——双流联结(Join)窗口联结(Window Join)间隔联结(Interval Join)窗口同组联…

C#界面里Form.IsMdiContainer 属性的使用

C#界面里Form.IsMdiContainer 属性的使用 由于屏幕的局限,以及软件需求的复杂,并且还需要方便使用, 面对这样的任务,就需要好好地考虑使用多窗口的界面设计。 因为每一个窗口可以实现不同的功能,这样方便把相关的功能放在一起,不同的功能分为不同的窗口。 这样既可解决屏…

PC_DRAM

动态 RAM(DRAM)的刷新 刷新的过程实质上是先将原存信息读出,再由刷新放大器形成原信息并重新写入的再生过程 根据这个特点,可以估计刷新电路执行趟耗费的时间大致和访存时间相当 刷新放大器及读放大器均起此作用 由于存储单元被访问是随机的,有可能某些存储单元长期得不到访问…

OceanBase 4.0 all-in-one 版本如何离线升级 obd

今天遇到了一个问题,现象是这样的。 问题出现的原因: 在测试 ob 4.0 allinone 版本时,我用了自动部署的方式(autodeploy),发现部署完的集群无法启动,错误原因可以参考这里:https:/…

three.js之缓冲类型几何体顶点

文章目录简介构成代码顶点构成图形核心代码顶点的位置与颜色BufferAttribute颜色差值法向量不设置法向量顶点索引不复用顶点复用顶点专栏目录请点击 简介 顶点一般使我们在创建模型的时候使用的,他一般对应buffer类型的几何体,使用BufferGeometry创建 点…

有效备考浙大MEM的五个好习惯建议

作为去年上岸浙大mem项目的学长,很多身边计划备考的朋友都在咨询如何才能一年上岸,我在去年拿到了203分的成绩,在不影响工作和生活的前提下,自己认为有效备考浙大mem项目要基本做到五大好习惯,特别针对我们在职人群&am…

软件测试面试题及答案 这个可以免费白嫖的题库不要错过了

对于很多新手软件测试人来说,除了掌握扎实的专业技能之外,你还需要一份个互联网软件测试工程师面试题库才能在万千面试者中杀出重围,成功拿下offer。 一般软件测试的面试分为三轮:笔试,HR面试,技术面试。前…