吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 11120|回复: 114

[转载技术] 解释一下什么是堆和栈。

  [复制链接]
破心 发表于 2015-5-12 18:14 | 显示全部楼层 |阅读模式

本帖最后由 破心 于 2015-5-12 18:20 编辑

问题描述

编程语言书籍中经常解释值类型被创建在栈上,引用类型被创建在堆上,但是并没有本质上解释这堆和栈是什么。我仅有高级语言编程经验,没有看过对此更清晰的解释。我的意思是我理解什么是栈,但是它们到底是什么,在哪儿呢(站在实际的计算机物理内存的角度上看)?
在通常情况下由操作系统(OS)和语言的运行时(runtime)控制吗?
它们的作用范围是什么?
它们的大小由什么决定?
哪个更快?

游客,如果您要查看本帖隐藏内容请回复


译者注

关于堆栈的这个帖子,对我来说,收获非常多。我之前看过一些资料,自己写代码的时候也常常思考。就这方面,也和祥子(我的大学舍友,现在北京邮电读研,技术牛人)探讨过多次了。但是终究是一个一个的知识点,这个帖子看完之后,豁然开朗,把知识点终于连接成了一个网。这种感觉,经历过的一定懂得,期间的兴奋不言而喻。

这个帖子跟帖者不少,我选了评分最高的四个。这四个之间也有一些是重复的观点。个人钟爱第四个回答者,我看的时候,瞬间高潮了,有木有?不过需要一些汇编语言、操作系统、计算机组成原理的的基础,知道那几个寄存器是干什么的,要知道计算机的流水线指令工作机制,保护/恢复现场等概念。三个回复者都涉及到了操作系统中虚拟内存;在比较速度的时候,大家一定要在脑中对“局部性原理”和计算机高速缓存有一个概念。

如果你把这篇文章看懂了,我相信你收获的不只是堆和栈,你会理解的更多!

兴奋之余,有几点还是要强调的,翻译没有逐字逐词翻译,大部分是通过我个人的知识积累和对回帖者的意图揣测而来的。请大家不要咬文嚼字,逐个推敲,我们的目的在于技术交流,不是么?达到这一目的就够了。

下面是一些不确定点:
我没有听过 bookkeeping data 这种说法,故没有翻译。从上下文理解来看,可以想成是用来寄存器值?函数参数?返回地址?如果有了解具体含义的朋友,烦请告知。
栈和堆栈是一回事,英文表达是 stack,堆是 heap。
调用栈的概念,我是第一次听说,不太熟悉。大家可以去查查资料研究一下。

以上,送给大家,本文结束。

本来有一些图片的,能帮助大家更好的理解,不过不知道为什么,我图片和附件都不能上传,也就将就吧。

评分

参与人数 36HB +50 THX +26 收起 理由
花盗睡鼠 + 2 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
24567 + 2
Jawon + 1
Soul1999 + 1
行行行行行行 + 1
冷亦飞 + 1
1712585820 + 2 + 1
消逝的过去 + 2
pygicx + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
风里去 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
三月十六 + 1
temp + 1 + 1
欧阳先生 + 1
zyyujq + 1 + 1
xgbnapsua + 2
云起枫落 + 2 + 1
我是好人 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
jaunic + 1
wbxs2077 + 2 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
hnymsh + 1
redballove + 1 + 1 [快捷评语]--你将受到所有人的崇拜!
MaskJS + 1 + 1 [快捷评语] - 吃水不忘打井人,给个评分懂感恩!
warhome + 1 + 1 有图片就更好了。谢谢
守护神艾丽莎 + 2 + 1 [快捷评语] - 分享精神,是最值得尊敬的!
wswwj + 3 + 1 [快捷评语] - 分享精神,是最值得尊敬的!
海天一色001 + 1 + 1 [快捷评语] - 分享精神,是最值得尊敬的!
pltemp + 1 + 1 [快捷评语] - 分享精神,是最值得尊敬的!
细长er芥末 + 1 + 1 [快捷评语] - 分享精神,是最值得尊敬的!
joery + 1 + 1 评分=感恩!简单却充满爱!感谢您的作品!
有何不可 + 2 + 1 评分=感恩!简单却充满爱!感谢您的作品!
duanbin109 + 1 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
逍遥枷锁 + 4 + 1 好人有好报!你的热心我永远不忘!谢谢!
1342971816 + 1 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
2573668719 + 1 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
小者 + 6 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
yuzhiboqianyuan 发表于 2015-5-12 22:51 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
逍遥枷锁 发表于 2015-5-12 23:11 | 显示全部楼层

好给力,必须了解下是堆和栈的含义,谢谢。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
可爱的宝贝 发表于 2015-5-12 23:40 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
bycye 发表于 2015-5-13 00:39 | 显示全部楼层

这个可以哦,还行
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
hhbb979 发表于 2015-5-13 07:27 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
fy88 发表于 2015-5-13 08:58 | 显示全部楼层

重新了解一下
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
xinzaixin 发表于 2015-5-13 09:34 | 显示全部楼层

路过,学习了,呵呵,多谢
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
大手温暖 发表于 2015-5-13 17:51 | 显示全部楼层

支持原创 支持技术牛人。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
king38492378 发表于 2015-5-13 18:38 | 显示全部楼层

学习下!!!!!!!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

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