程序中的堆和栈

程序在执行时,会把代码加载到内存,结合CPU进行运算。本文主要介绍程序代码如何在内存上分配的。注意,这里的堆栈概念是程序执行的角度,不是算法的角度。

分配和释放

堆 heap

堆上的数据由工程师通过代码主动分配和释放,若工程师没有释放,垃圾回收机制(GC)或者程序退出是操作系统(OS)释放。

栈 stack

由操作系统分配释放,主要用来存放函数参数、临时/局部变量。

存储方式

内存上的二级缓存,由OS或者GC管理生命周期。因为是二级缓存,调用速度比一级缓存慢

堆使用链表存储地址,不连续,会产生碎片

栈 stack

使用一级缓存,用完立即释放

地址连续,预先设置。

comments powered by Disqus