请老师详细结合实例讲解下内存管理

请老师详细结合实例讲解下内存管理

之前看到一个助教老师说内存划分为:堆、栈、池。

但是今天又看到一位老师说划分为: 堆、 栈、 数据段、 代码段。

请老师解释下哪个说法正确?并用实例结合说明它们的含义。

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好, 可以了解下,栈,堆,代码段,数据段表示什么。如下:

1、栈内存:保存基本值和引用类型值的地址。

2、堆内存:保存一组无序且唯一的引用类型值,可以使用栈中的键名来取得。

3、代码段:通常是指用来存放程序执行代码的一块内存区域。

4、数据段:数据段通常是指用来存放程序中已初始化的全局变量的一块内存区域。

示例:如下一小段代码

http://img1.sycdn.imooc.com/climg/5e2088d60984980b06300294.jpg

a是全局变量,会被存放在数据段中,同时由于a是基本数据类型,会存在栈内存中,obj是引用数据类名,保存引用数据类型地址的obj会存放在栈内存中,引用数据(也就是name,type等)会存放在堆内存中, 而teach函数内容会存放在代码段中。如下图所示:

http://img1.sycdn.imooc.com/climg/5e20886b098565b612740766.jpg

最常用的还是栈和堆,一般我们不会细分到数据段和代码段,这是计算机原理里面的内容。同学只要知道变量名指向堆的地址空间,每个对象都是独立的就可以了。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 慕移动3569406 提问者 #1
    感谢老师耐心! 这么晚还回复答案, 要是每个老师都像你一样言简意赅解释问题, 还为学员给出真心的意见就好了
    2020-01-17 00:15:04
好帮手慕慕子 2020-01-16 19:01:41

同学你好,这两种说法都是对的, 只是划分的方式不同而已。

这里主要涉及到计算机操作系统的相关理论知识,比较抽象,无法结合实例讲解。 目前学习阶段,同学简单了解一下即可,不用深究,重点放在前端相关技能的学习上。如果感兴趣的话,后期工作了,同学可以查看计算机操作系统相关的资料学习一下,扩展自己的知识体系。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 慕移动3569406 #1
    谢谢建议, 其实我只想要简单粗浅理解一下而已, 因为遇到视频老师讲的新知识,听不懂,会有知识的焦虑感 , 感觉自己不弄懂,别人弄懂了,自己竞争力就不如别人了, 所以还是恳请老师解答一下。 不需要非常晦涩的计算机类的知识, 只需要老师能够结合一段代码,然后像视频中老师那样, 画出内存区域的图框,然后画线说明它们存放的位置, 简单解释即可。 我还是比较倾向 堆、 栈、 数据段、 代码段这个说法的, 您就照着这个讲解即可。
    2020-01-16 19:36:16
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师