啥是栈
栈是一种受限的数据结构模型,其数据总是只能在顶部追加,利用一个指针进行索引,顶端叫栈顶,相对的一端底部称为栈底。栈是一种LIFO后入先出的数据结构。
栈就两种操作:
PUSH,压栈,向栈内加入数据,
POP,出栈
再进一步探讨:
首先将栈与堆分清,从看到这篇**开始,我建议你不要把堆和栈连在一起叫,栈是栈,堆是堆,这是两回事,别混为一谈!(堆本文不深入讨论)
从C/C++编程语言的角度来看:
相同点:都是一片内存区,在链接时指定栈区/堆区的位置以及大小。
不同点:
栈:由编译器分配,存放函数的参数值,局部变量,寄存器组(不同的单片机/处理器各有不同)、函数调用参数传递、中断异常产生时须保存处理器状态的寄存器值等
堆:由程序员分配释放,对于C而言,malloc、realloc/free进行分配/释放,对C++而言,由new/delete分配/释放。
|