首页

文章

JAVA之堆内存和栈内存的区别

发布网友 发布时间:2022-03-22 23:48

我来回答

1个回答

热心网友 时间:2022-03-23 01:17

堆和栈的区别(内存和数据结构)

在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教,这对于大家学习会有很大帮助。
数据结构的栈和堆
首先在数据结构上要知道堆栈,尽管我们这么称呼它,但实际上堆栈是两种数据结构:堆和栈。

堆和栈都是一种数据项按序排列的数据结构。

栈就像装数据的桶或箱子
我们先从大家比较熟悉的栈说起吧,它是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。这就如同我们要取出放在箱子里面底下的东西(放入的比较早的物体),我们首先要移开压在它上面的物体(放入的比较晚的物体)。

堆像一棵倒过来的树
而堆就不同了,堆是一种经过排序的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。由于堆的这个特性,常用来实现优先队列,堆的存取是随意,这就如同我们在图书馆的书架上取书,虽然书的摆放是有顺序的,但是我们想取任意一本时不必像栈一样,先取出前面所有的书,书架这种机制不同于箱子,我们可以直接取出我们想要的书。

内存分配中的栈和堆
然而我要说的重点并不在这,我要说的堆和栈并不是数据结构的堆和栈,之所以要说数据结构的堆和栈是为了和后面我要说的堆区和栈区区别开来,请大家一定要注意。

下面就说说C语言程序内存分配中的堆和栈,这里有必要把内存分配也提一下,大家不要嫌我啰嗦,一般情况下程序存放在Rom或Flash中,运行时需要拷到内存中执行,内存会分别存储不同的信息,如下图所示:

内存中的栈区处于相对较高的地址以地址的增长方向为上的话,栈地址是向下增长的。

栈中分配局部变量空间,堆区是向上增长的用于分配程序员申请的内存空间。另外还有静态区是分配静态变量,全局变量空间的;只读区是分配常量和程序代码空间的;以及其他一些分区。
视频相册制作软件如何做视频相册? 用word2007自动生成目录后,目录上始终有个“ 更新目录”的框,怎么去... Word2007目录怎么删除正文 手机不能横屏了是怎么回事? 庞贝柱的结构样貌是怎样的? 埃及庞贝柱景点描述 庞贝柱是怎样的历史? 埃及庞贝柱历史追溯 庞贝柱是个什么样的景点? 庞贝柱是为为了答谢谁而建的? 属蛇穿什么转运最旺运 属蛇什么颜色转运最旺 属蛇的人什么颜色转运最旺 英国查理一世时期君主专政的特征 增值税专用发票开错作废证明怎么写 女主为了救男主被拔掉指甲,被活埋,但男主却认错了人,这本小说叫... 什么地方能读到法拉奇的小说男子汉 高级职称有什么待遇 职称高级相当于什么? HUAWEI 华为 AM185 入耳式有线降噪耳机-适用对象 华为FreeBuds Pro有线充版-入耳式真无线动圈主动降噪蓝牙耳机(陶瓷白... HUAWEI 华为 FreeLace Pro 入耳式颈挂式动圈主动降噪蓝牙耳机 曜石黑... HUAWEI 华为 FreeBuds Pro 入耳式真无线动圈主动降噪蓝牙耳机 墨韵白推... 华为Freebuds 3 无线充版半入耳式真无线蓝牙耳机(碳晶黑)-详细介绍... HUAWEI 华为 FreeBuds 悦享版 入耳式无线蓝牙耳机-详细介绍 如何评价华为新旗舰tws耳机freebudspro? HUAWEI 华为 FreeBuds Pro 无线蓝牙耳机推荐 字符串"\\\"ABC\"\\"所占内存字节的长度 怎样挑选千元内的羊绒大衣? 现在思科的CCNA,CCNE,CCIP的考证费分别是多少啊,通过率怎样 长春小飞没有车没有房 碳钢的多久生锈 碳钢多久会生锈 碳钢多长时间会开始生锈 碳钢和铝哪个容易生锈 梦见天宫图是什么意思 光遇2023好友树解锁图鉴 光遇二级节点多少个 ...火柴小女孩》《词语手册》里有很多词语的意思的,求告知 暖融融解释 领淘通淘客助手这个软件怎么样? 淘宝客必备的九大工具有哪些? 电脑里硬盘如何共享怎么实现多台电脑共用一块硬盘 两台电脑一个硬盘两台电脑是否可以同时用一个硬盘 共享电脑硬盘怎样设置局域网电脑硬盘共享 现在下载歌曲好还是不下好 故障码P033D的含义解析 切菜机多功能型切菜机 scanbox三维扫描仪 苹果13没有删除的备忘录怎么恢复? iphone备忘录永久删除怎么恢复?iphone备忘录恢复最近删除文件方法介绍... 红米k40没有root选项 红米开发者选项如何设置最好 项目数据分析师一年考几次啊? 有谁知道华为认证的级别? java的序列化有什么作用,什么时候用 java序列化的作用 JAVA里的序列化有些什么功能? java 序列化有什么作用 php自学能学会吗? 毕业想做java后端的话要学什么 Java后端是什么 系统集成项目管理师是在哪里报名的? 私立学校的老师能评教师职称吗 购岗教师可以评职称吗 企业编教师可以评职称吗? 我可以评教师的职称了吗 UI设计师他们工作中常用哪些软件?他们都是怎么学出来的? 硬件设计和软件设计各包含哪些主要工作? 软件设计主要是从事哪些方面 考软件设计师要考哪些内容啊? 华为认证去哪里考试?要参加培训的吗? 华为认证能不能不用培训学习,自学华为认证培训的话怎么样才能入行呢? 华为认证培训? 有没有培训华为认证的机构? 不参加华为培训能不能参加华为认证考试 华为认证培训需要多久,多少钱 网络规划的主要任务是什么? 网络规划师是什么 网络规划设计师的注意事项 系统分析师考试论文 请问福建省2011年下半年计算机软考什么时候公布开设哪些科目?数据库系统工程师一年能考几次?谢谢! 江苏泰州特产有哪些 泰州特产有哪些? 粳米到底是什么米?? 江苏泰州有什么特产啊? 江苏泰州这五种特产,你知道哪几种? 江苏泰州有什么可以拿的出手的特产? 泰州有什么好的可以送人的特产啊? 泰州有哪些特产?姜堰有哪些特产? 江苏泰州兴化有什么特产?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com