区别数据结构中的堆栈与内存中的堆栈的个人总结

相信很多像我外行进入IT的童鞋们一定会对某些专业知识感到困惑,例如数据结构中的堆栈和我们编程常说的内存堆栈究竟是怎么回事,有什么区别,下面是我个人在网上学习或捕获到的一些干货,供大家参考:

新手上路,如有错漏,请轻喷。

数据结构中的堆栈:是两种特殊的数据结构,都是对数据项按序排列的数据结构,对管理数据的一种手段和方法。可以用来存放数据和地址,栈只能在一端(栈顶)对数据项进行插入和删除。

内存中的堆栈是确切存在的物理结构,是用来存放不同数据的内存空间。内存中的栈,是由系统自动分配和释放的,是由高地址向低地址扩展的数据机构,是一段连续的内存区域,是对数据结构中的栈这种手段的实现。栈的顶地址和最大容量是系统预先设定好的,在程序编译时,它就是一个确定的常数,但注意并不是所有用到栈技术的区域都是栈区,虽然目前是这样,这是概念定义的准确性问题。 内存中堆,一般用来动态分配内存的,它的实现跟操作系统和编译器有关,一般内存中的堆貌似是用链表实现的。

内存中的堆:队列优先,先进先出。向高地址扩展的数据结构,是不连续的内存区域,在操作系统中,一般是由程序员动态分配释放的,分配方式:操作系统有一个专门存储空闲地址的链表,当程序申请分配空间时,OS会遍历这个链表(遍历方向:低地址向高地址),找到第一个大于申请的空间的堆节点,并从空闲节点列表中删除该节点,把空间分配给程序,若找到的空间比申请的空间要大,系统会自动把多余的那部分重新放入空闲链表中。一般来说,操作系统会在内存的首地址处记录分配的空间大小,以便程序能够正确地释放该内存空间。堆的大小取决于计算机有效的虚拟内存。

虚拟内存:利用部分的硬盘空间充当内存使用。由于程序运行是所需内存(随机存储器RAM)过大,会导致内存消耗殆尽,系统会自动调用硬盘空间充当内存,缓解内存紧张。RAM空间匮乏时,可以增加虚拟内存来进行补偿。当计算机从RAM中读取数据的速度一般比硬盘快,所以想要程序的运行速度更快,最直接的是加内存条,RAM越大,程序运行越快。

内存中的栈:由操作系统自动分配释放 ,存放函数的参数值局部变量的值等。其操作方式类似于数据结构中的栈先进后出。它是由高地址向低地址扩展的数据机构,是一段连续的内存区域,只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出

新手上路,若有错漏,请多多赐教。
  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值