- 5
- 0
- 约5.1千字
- 约 11页
- 2016-10-23 发布于河南
- 举报
什么是堆和栈
什么是堆和栈,它们在哪儿?
编程语言书籍中经常解释值类型被创建在栈上,引用类型被创建在堆上,但是并没有本质上解释这堆和栈是什么。我仅有高级语言编程经验,没有看过对此更清晰的解释。我的意思是我理解什么是栈,但是它们到底是什么,在哪儿呢(站在实际的计算机物理内存的角度上看)?
在通常情况下由操作系统(OS)和语言的运行时(runtime)控制吗?
它们的作用范围是什么?
它们的大小由什么决定?
哪个更快?
答案一
栈是为执行线程留出的内存空间。当函数被调用的时候,栈顶为局部变量和一些 bookkeeping 数据预留块。当函数执行完毕,块就没有用了,可能在下次的函数调用的时候再被使用。栈通常用后进先出(LIFO)的方式预留空间;因此最近的保留块(reserved block)通常最先被释放。这么做可以使跟踪堆栈变的简单;从栈中释放块(free block)只不过是指针的偏移而已。
堆(heap)是为动态分配预留的内存空间。和栈不一样,从堆上分配和重新分配块没有固定模式;你可以在任何时候分配和释放它。这样使得跟踪哪部分堆已经被分配和被释放变的异常复杂;有许多定制的堆分配策略用来为不同的使用模式下调整堆的性能。
每一个线程都有一个栈,但是每一个应用程序通常都只有一个堆(尽管为不同类型分配内存使用多个堆的情况也是有的)。
直接回答你的问题: 1. 当线程创建的时候,操作系统(OS)为每一个系
您可能关注的文档
- 中国现行税种大全.doc
- 中国管理学第四章.ppt
- 中国舵机行业发展研究报告.docx
- 中国飞机租赁市场深度研究及发展前景预测(2011版)-目录.doc
- 中国近代国情.ppt
- 中考成语复习:中考中易错的成语.doc
- 中考物理第二轮复习专题测试 第1讲 光现象.doc
- 中考:关于对称的压轴题.doc
- 主题式水上乐园:度假村的革新点、.doc
- 主要工序控制表.doc
- 小学科学物质变化现象实验探究试卷冲刺卷.docx
- 2026—2028年中国手用磨油石行业生态全景与战略纵深研究报告:政策、技术、资本与消费四重驱动下的产业重构与机遇地图.pptx
- 汽车节能驾驶试题及答案.docx
- 2026年湖南编制社区工作者真题试题及答案.doc
- 第08讲 解题技巧专题:巧构等腰三角形的基本模型(4知识点+4大题型+过关测)(寒假预习讲义)(原卷版)八年级数学新教材北师大版.docx
- 大型施工机械设备维护记录.docx
- 2026—2028年中国手用抛光石行业生态全景与战略纵深研究报告:政策、技术、资本与消费四重驱动下的产业重构与机遇地图.pptx
- 2026年湖南编制教师招聘学科专业知识试题及答案.doc
- 汽车结构技术试题及答案.docx
- 初中物理实验操作指导手册.docx
最近下载
- 变频器技术考试题及答案.docx VIP
- 重症患者的肠内营养护理.pptx VIP
- 输液泵操作评分标准.doc VIP
- 青少年焦虑症护理查房.pptx VIP
- 试析《三国演义》在日本动漫中的传播与接受.pdf VIP
- 从吉川英治《三国志》看《三国演义》在日本的传播与接受The Spread and Reception of the Romance of the “Three Kingdoms” in Japan from the “Three Kingdoms” by Yoshikawa Eiji-来源:现代语言学(第2022002期)-汉斯出版社.pdf VIP
- 与总承包单位协调配合措施方案.docx VIP
- 《清静经》全文及译文.pdf VIP
- 与总承包单位协调配合措施方案.docx VIP
- 线线角、线面角、面面角专题.pdf VIP
原创力文档

文档评论(0)