静态储存,堆,栈的理解

2023-11-12

数据结构中的堆与栈

:可以理解为为一个瓶子,他遵循着先进后出的原则
:是一种经过排序的树状结构,每一个节点都有一个值,我们通常说的堆是二叉堆,堆的特点是跟节点最大或者最小,且子节点也是一个堆,所以我们在使用的堆的时候,都是随便取一个节点,并没有什么顺序

内存的基本概述

栈: 编译器自动申请和自动释放的区域,存放函数的参数值,和一些局部变量,在windows 大小一般为1M,在linux下一般为8M
堆: 是由程序员手动申请和释放,但是他与数据结构的堆还是有区别的,他的分配类似于链表,大小接近4G
全局区(静态区):静态变量和全局变量是存储在一起的,他会伴随着程序结束才会被释放,.data()存放的已经初始化的全局变量,而.bss下存放的未被初始化的
文字常量区 :存放常量,如字符串常量
程序代码区 :存放程序的代码,并且是只读的

详解

在这里插入图片描述
上面的是一个详细的内存分布的图,我们可以看到各个内存的存放方式

  1. 栈(stack) :是从高地址向地址延深的,他处于最高的地方,他一般用在存储一些局部变量,模块结束后就自动的销毁,且他申请的空间是连续的,但是他的大小是有限的,只适合一小的变量
  2. 下面的就是堆,他是从低地址向高地址向低地址延深的,他是由程序员手动申请和释放的,他的管理类似一条链表,所以他的空间是不连续,过于频繁的释放和申请栈区变量,会产生大量的空间碎片,而导致程序运行缓慢
  3. 之后常量区(全部变量区),他会伴随着程序结束才会被释放
  4. 常量储存区: 他存放的是不可被修改的常量,通常用在那些编译期间就能确定大小的区域,并且他在程序运行期间是可见的
  5. 代码段:存放的程序执行的代码,其中代码段和已经初始化的静态变量在可执行文件中,其实也放有一些常量
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

静态储存,堆,栈的理解 的相关文章

  • VS2008调试dump文件

    让程序在崩溃时体面的退出之Dump文件 在我的那篇 让程序在崩溃时体面的退出之CallStack 中提供了一个在程序崩溃时得到CallStack的方法 可是要想得到CallStack 必须有pdb文件的支持 但是一般情况下 发布出去的程序都
  • 网址服务器不稳定,关于网站被360搜索提示服务器不稳定可能无法正常访问的解决方法...

    相信很多做网站的站长们都有过类似的经历吧 有时候因为服务器节点问题或者其他问题导致服务器或vps暂时性无法运行导致网站暂时无法打开 这些都是属于正常的现象 但是运气不好的时候辛辛苦苦优化的网站可能就会被搜素引擎标记为 该页面因服务器不稳定可
  • 锦囊妙计--组建新团队整体规划

    详细请见幕布链接 https mubu com doc 2MicLCcsoC 幕布内的具体内容还在持续完善中 敬请期待

随机推荐

  • 【洛谷 P1115】最大子段和 题解(贪心算法)

    最大子段和 题目描述 给出一个长度为 n n n 的序列 a a a 选出其中连续且非空的一段使得这段和最大 输入格式 第一行是一个整数 表示序列的长度 n
  • 报错unable to access android sdk add-on list

    前言 初次安装Android Studio AS启动后 会在默认路径下检测是否有Android SDK 如果没有的话 就会报错如下 解决办法 我这里安装了sdk 然后点击cancel 下一步会自动读取我们的sdk 然后点击next就行了 如
  • OPENWRT中SSH免密钥登陆(详细步骤)

    通过使用ssh keygen生成公钥 在两台机器之间互相建立新人通道极客 假设本地机器是client 远程机器为server 1 使用ssh keygen生成rsa keygen 在这里会覆盖以前生成的 ssh id rsa文件 请提前做好
  • vue3的一些知识点plus--3

    二十 兄弟组件传值 Bus 兄弟组件直接的传值 最基础的是通过同一个父级进行数值的传递 使用prop和emit 太过繁琐 父级 div a a b b div let flag ref false let getFlag params bo
  • 停车场管理

    停车场管理 1 项目简介 设停车场是一个可以停放n辆汽车的南北方向的狭长通道 且只有一个大门可供汽车进出 汽车在停车场内按车辆到达时间的先后顺序 依次由北向南排列 大门在最南端 最先到达的第一辆车停放在车场的最北端 若车场内已停满n辆车 那
  • Java入门(1) —— 变量、运算符、分支结构和程序员思维的理解

    1 计算机语言的发展史 机器语言 机器语言是指一台计算机全部的指令集合 汇编语言 为了减轻使用机器语言编程的痛苦 人们进行了一种有益的改进 用一些简洁的英文字母 符号串来替代一个特定的指令的二进制串 高级语言 BASIC True basi
  • Map循环遍历的五种方法

    因为Map比较常用 所以今天来总结下Map取值比较常用的几种遍历方法 1 创建一个Enum public enum FactoryStatus BAD 0 ou GOOD 1 yeah private int status private
  • 排错解决:etcd节点掉线后(code=exited, status=1/FAILURE),如何加入

    一 问题出现环境 有一个etcd节点因为磁盘问题当掉 在node1节点查看健康状态 root node01 k8s etcd bin etcdctl ca file k8s etcd ssl ca pem cert file k8s etc
  • python统计字典里面value出现的次数_python 统计list中各个元素出现的次数的几种方法...

    利用字典dict来完成统计 举例 a 1 2 3 1 1 2 dict for key in a dict key dict get key 0 1 print dict 输出结果 gt gt gt 1 3 2 2 3 1 利用Python
  • 【WINDOWS / DOS 批处理】for命令详解(六)

    for命令详解 一 共十篇 for命令详解 二 共十篇 for命令详解 三 共十篇 for命令详解 四 共十篇 for命令详解 五 共十篇 for命令详解 六 共十篇 for命令详解 七 共十篇 for命令详解 八 共十篇 for命令详解
  • urlrewrite(伪静态技术运用2之outbound-rule)

    问题 页面通过 servlet detail magid 520 categoryId 205 来访问一个servlet 这个链接在IE地址栏上给人家看起来很不舒服 想把它伪装一下变成别的地址 例如想把它伪装成 servlet detail
  • 2019最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)

    近期总结一一些面试题 都是企业的面试题笔记题 感觉薪资10k下的都会出笔试题 特别高的薪资都是直接技术面试或者是 现场编程 总结很多人的面试题 后期会对于单个知识点再说笔记详细讲解 部分都是百度的答案 不是特全面的 可以自己找 红色为常见面
  • vue 父子组件(个人笔记)

    目录 父组件使用子组件 父子组件之间传参 props 子获父 ref 子获父 this parent 子获父 emit 父获子 使用this emit 自定义事件名 所需要传的值 this children 父获子 父组件使用子组件 父组件
  • STM32 ADC 多通道16路电压采集

    下面介绍一种利用STM32单片机制作的16路多通道ADC采集电路图和源程序 采用USB接口与电脑连接 实则USB转串口方式 所以上位机可以用串口作为接口 电路图中利用LM324作为电压跟随器 起到保护单片机引脚的作用 直接在电脑USB取点
  • red5聊天功能--私聊的实现

    这里我是在服务器端进行转发 遍历当前所有连接 找到目标对象 然后调用客户端函数 不知道还有没有更好的方法 如果人数多 服务器要承受较的的压力 public boolean sendPrivateMsg String target Strin
  • Centos/linux根目录扩容、分区、挂载。LVM、物理卷、逻辑卷

    一 LVM结构 二 数据盘划分 磁盘情况 需要将vda vdb剩余资源划分给 data下 开始划分 创建磁盘分区 注意 并不要求分区的大小一致 同样 分区需要使用 8e 类型来使他们可用于LVM fdisk dev vda n gt p g
  • Unity调用摄像头获取拍摄画面

    using System Collections using UnityEngine public class Test MonoBehaviour public WebCamTexture cameraTexture public str
  • 酷应用背后,低代码正在被重估

    就当下的中国TO B企业而言 尤其是中大企业而言 复杂的场景和需求是阻碍数字化的最根本原因 而低代码恰可以以一种最原子化和最细颗粒度的数字模型来解决这个问题 帮助企业构建一个完整的 连贯的前端数字化应用 作者 皮爷 出品 产业家 生产计划
  • 华为机试题80-整型数组合并

    描述 题目标题 将两个整型数组按照升序合并 并且过滤掉重复数组元素 输出时相邻两数之间没有空格 输入描述 输入说明 按下列顺序输入 1 输入第一个数组的个数 2 输入第一个数组的数值 3 输入第二个数组的个数 4 输入第二个数组的数值 输出
  • 静态储存,堆,栈的理解

    数据结构中的堆与栈 栈 可以理解为为一个瓶子 他遵循着先进后出的原则 堆 是一种经过排序的树状结构 每一个节点都有一个值 我们通常说的堆是二叉堆 堆的特点是跟节点最大或者最小 且子节点也是一个堆 所以我们在使用的堆的时候 都是随便取一个节点