【堆heap】由编译器自动分配释放,如int a;系统在栈中自动为a开辟存储空间。
后进先出,压栈方向是向低地址
打个比方,一条绳子下掉了一块铁块,然后放到水中,绳子的上端与水平面平齐且铁块最初也在水平面,当我们添加铁块的时候,重叠的铁块就会慢慢往下沉(绳子可伸缩),这个动作就相当于:压栈。栈底在水平面,栈顶就是铁块的位置,当我们要从水里把铁块取出的时候,就往上拉,这样后面放进去的铁块就最先露出水平面,也就是后进先出的道理。
【栈stack】由程序员分配释放,如malloc
先进先出(队列)
堆可以这样理解,就相当于没有绳子挂着的铁块,先进的就沉到水底了,出口也在水底。
上述只是一个感性的理解,下面从理论的角度分析两者的区别
1、申请方式
2、申请大小限制
3、申请后系统响应
。。。