堆 heap
栈 stack
是两种不同的数据结构
stack的特点是先入后出 就像叠盘子 先放上去的盘子后拿走(底里的抽不出来自然最后才能拿走)
stack和heap放在一起讨论的话 其实不是讲的数据结构了 是说操作系统给程序分配内存的方式
对于一个程序来说 运行的时候 系统分配了一定内存给它 其中一块叫堆 一块叫栈
堆里面主要放 动态分配的内容 比如c里面用 malloc 分配到的空间 就在堆里 c++里面用new 分配到的也在堆里
栈里面放 函数的局部变量
一个函数的局部变量 会在这个函数被调用时push到栈里 这个函数返回的时候才从栈里面pop出来
栈的先入后出的顺序使得函数可以嵌套 递归 如果递归层数太多 栈也会满 就会出现栈溢出…… |