栈和堆是什么意思

堆(Heap)栈(Stack)

堆:一般由程序员分配释放, 若程序员不释放,程序结束时可能由 OS 回收 。注意它与数据结构中的堆是两回事,分配方式是类似于链表。可能用到的关键字如下:new、malloc、delete、free等等。

栈:由编译器 (Compiler) 自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。


堆:是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。

栈:在 Windows 下, 栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在 WINDOWS 下,栈的大小是固定的(是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示 overflow。因此,能从栈获得的空间较小。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 喜欢的话记得点赞 一、内存管理:移动设备的内存及其有限,每一个APP所能占用的内存是有限制的二、什么行为会增加AP...
    甘哲157阅读 2,044评论 1 12
  • “text segment ”是应用程序运行时应用程序代码存在的内存段。每一个指令,每一个单个函数、过程、方法和执...
    紫云夕月阅读 7,352评论 4 20
  • 摘自http://blog.jobbole.com/75321/ 问题描述 编程语言书籍中经常解释值类型被创建在栈...
    许小小晴阅读 578评论 0 0
  • 寒意入骨 昏暗灯影处 独立高楼栏栅 谁人咿咿呀呀 月下而歌之 解不...
    一个的小丑面具阅读 299评论 0 0
  • 《七月与安生》电影观后感 单亲家庭长大的安生,渴望家庭的温暖,希望过上安稳平淡的生活,却一直过着四海为家的流浪生活...
    渔阳鼙鼓阅读 840评论 0 0