搜索
bottom↓
12
返回列表 发新帖
楼主: mowin

请高手分别讲讲堆、栈、堆栈这三样东西,不明白他们的区别是什么。最好解释得通俗易懂

  [复制链接]

出0入0汤圆

发表于 2011-9-7 09:20:26 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-9-7 13:55:01 | 显示全部楼层
Stack

出0入0汤圆

发表于 2011-9-8 15:30:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-8 22:23:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-13 10:44:52 | 显示全部楼层
好东西 解决了不少

出0入0汤圆

发表于 2012-2-13 15:36:10 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-2-13 22:03:32 | 显示全部楼层
main()中的funA funcB funcC不用压站么

出0入0汤圆

发表于 2012-2-14 00:18:18 | 显示全部楼层
用OD调试一个程序,就知道了。调用一个函数前,保留现场,需要压栈,函数返回时,恢复现场,需要出栈。
栈:就是个子_弹匣,那种一颗一颗往里压的,左轮就是堆(不准确)

出0入0汤圆

发表于 2012-2-14 01:42:45 | 显示全部楼层
MARK!

出0入0汤圆

发表于 2012-2-14 07:34:02 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-2-14 08:55:48 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-2-14 10:09:56 | 显示全部楼层
全局、静态、常量、堆、栈

出0入0汤圆

发表于 2012-2-14 14:54:20 | 显示全部楼层
Mark!

出0入0汤圆

发表于 2012-2-14 17:20:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-14 19:16:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-15 12:01:42 | 显示全部楼层
3楼和12楼有用

出0入0汤圆

发表于 2012-2-16 14:21:44 | 显示全部楼层
好帖

出0入0汤圆

发表于 2012-2-16 15:45:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-16 20:48:34 | 显示全部楼层
这个必须好好看看!

出0入0汤圆

发表于 2012-2-19 11:23:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-19 11:57:33 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-19 14:14:31 | 显示全部楼层
堆栈

出0入0汤圆

发表于 2012-2-20 00:29:07 | 显示全部楼层
哈哈

出0入10汤圆

发表于 2014-12-1 19:18:45 | 显示全部楼层
banyai 发表于 2010-7-29 07:20
简单点讲,堆就像一个水池,你可以自由的在里面取水,再放回(malloc,free)。栈就像一个水井,只能从顶部取水 ...

这个讲解得很通俗

出0入0汤圆

发表于 2014-12-2 14:35:12 | 显示全部楼层
这贴问得好~~回答的人也很给力

出0入0汤圆

发表于 2014-12-2 16:05:19 | 显示全部楼层
jimo 发表于 2008-1-8 16:48
堆是硬件实现的,栈是一种数据结构,但是很多情况已经不区分它们了
------------------------------------- ...

你讲的太好了,膜拜~~~

出0入0汤圆

发表于 2014-12-2 16:26:42 | 显示全部楼层
一直都以为堆和栈是一样的

出0入0汤圆

发表于 2014-12-2 16:52:04 | 显示全部楼层
多谢!··················

出0入0汤圆

发表于 2014-12-2 19:19:33 | 显示全部楼层
再次回来看过

出0入0汤圆

发表于 2014-12-2 19:32:11 | 显示全部楼层
顶                 

出0入0汤圆

发表于 2014-12-3 16:37:52 | 显示全部楼层
回复中学习了

出0入4汤圆

发表于 2014-12-3 16:43:50 | 显示全部楼层
受教了,很多大神都出来指导了

出0入0汤圆

发表于 2014-12-6 01:37:17 | 显示全部楼层
看评论学了好多,15楼的例子很清楚

出0入0汤圆

发表于 2014-12-6 03:34:52 | 显示全部楼层
看了上面的解释,几乎都有错误,尤其是对堆的解释。
而堆和栈是两个不同的东西,任何时候把它们放在一起都感觉怪怪的…………
数据结构中的堆和栈:
堆定义:
n个元素的序列{k1,k2,…,kn}当且仅当满足下列关系之一时,称之为堆。
  情形1:ki <= k2i 且ki <= k2i+1 (最小化堆或小顶堆)
  情形2:ki >= k2i 且ki >= k2i+1 (最大化堆或大顶堆)
  其中i=1,2,…,n/2向下取整;
堆可以理解为一个特殊的完全二叉树(但完全二叉树的定义跟堆没关系,只是用树描述比较形象),即有这样一个完全二叉树,树中所有非终端结点的值均不大于(或不小于)其左、右孩子结点的值。

栈定义:
定义:限定仅在表头进行插入和删除操作的线性链表。
一般而言,栈所使用的是单链表,即每个节点只有一个链,用来指向下一个节点(区别于双向链表)。操作时用一个指针指向这个链表的第一个节点,压栈(插入)时将新节点的链(也是指针)指向第一个节点,然后将原来指向第一个节点的指针指向新节点;出栈(删除)时,用一个新指针指向第一个节点,同时访问第一个节点的链并将原来的指针替换为链值(即指向了第二个节点)


堆和栈这两种数据结构最大的意义在于区别于数组这种连续结构,使之可以灵活分配空间,被广泛应用于动态内存分配中。
栈内存一般用来存放局部变量和函数调用地址,以按表达式的顺序操作变量或者使被调用的函数能根据该地址返回到原函数里。

出0入0汤圆

发表于 2014-12-6 08:23:14 | 显示全部楼层
crtfor 发表于 2014-12-6 03:34
看了上面的解释,几乎都有错误,尤其是对堆的解释。
而堆和栈是两个不同的东西,任何时候把它们放在一起都 ...

汗,感觉就是说了一些概念性的东西。

出0入0汤圆

发表于 2014-12-6 08:57:39 | 显示全部楼层
这个好帖现在才看见呢

出0入0汤圆

发表于 2014-12-6 09:41:50 | 显示全部楼层
marker 发表于 2008-1-7 23:40
以下是从网上摘录的
---------------------------------------------------------------
堆”和“栈”是独 ...

讲得很经典

出0入0汤圆

发表于 2014-12-6 10:49:36 | 显示全部楼层
ATmega32 发表于 2008-1-8 16:13
堆是堆,栈是栈,

一般情况所说的堆栈,实际上是栈。

头像好象不能空了吧,小心些了

出0入0汤圆

发表于 2014-12-6 12:41:58 来自手机 | 显示全部楼层
重新认识了堆栈,受教了。

出0入0汤圆

发表于 2014-12-6 14:09:17 | 显示全部楼层
堆栈和栈是一回事,堆是另一码事

出0入0汤圆

发表于 2014-12-7 01:28:22 | 显示全部楼层
tragedy 发表于 2014-12-6 08:23
汗,感觉就是说了一些概念性的东西。

这本来就是概念性的东西!
概念都不知道谈什么应用?
而且这类数据结构对只会复制粘贴别人代码,遇问题就发帖求助的人来说毫无用处,不知道也罢,所以概念我也没讲完。
想研究操作系统或者复杂任务处理的还是搬着书看吧,在这儿说些有的没的作用也不大。

出0入0汤圆

发表于 2014-12-7 09:15:24 来自手机 | 显示全部楼层
正在学习之中

出0入0汤圆

发表于 2014-12-7 09:47:43 来自手机 | 显示全部楼层
学习s了

出0入0汤圆

发表于 2014-12-7 09:52:27 | 显示全部楼层
MARK,,,,硬件底层的东西,,有时间重新研究研究ARM启动代码,,还有看K&R C

出0入0汤圆

发表于 2014-12-7 10:17:47 | 显示全部楼层
进来瞧瞧高手么

出0入0汤圆

发表于 2014-12-7 12:18:16 | 显示全部楼层
关注楼主

出0入0汤圆

发表于 2015-8-26 17:04:38 | 显示全部楼层
lovewwy 发表于 2012-2-14 10:09
全局、静态、常量、堆、栈

说到点上了,但是全局和静态在一块的,一般就是四个区,全局(静态)、常量、堆、栈

出0入0汤圆

发表于 2015-8-26 18:36:07 | 显示全部楼层
当年的菜鸟,现在的大神,只要坚持和努力,就是大神。

出0入0汤圆

发表于 2015-8-26 19:46:11 | 显示全部楼层
mark !学习了

出0入0汤圆

发表于 2015-8-27 09:17:01 | 显示全部楼层
这么多“金牌会员”不知道堆、栈、堆栈!!!

出10入0汤圆

发表于 2016-5-15 11:38:19 | 显示全部楼层
jimo 讲的很易懂了

出0入0汤圆

发表于 2016-5-15 15:06:54 来自手机 | 显示全部楼层
再复习一遍
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-9 05:41

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表