堆(heap)和栈(stack)的区别
栈:
- 执行效率较高
- 申请和分配系统自动完成
- 空间较小—不易存放大量数据,因为可能会栈溢出
- 有名空间–可以通过名称访问
- 在函数调用结束时会释放变量空间
堆:
- 执行效率较低
- 申请和分配有程序员自己完成
- 空间较大—可以保存较大量的数据
- 无名空间----只能通过指针访问
- 程序结束释放,或者由程序员调用free()释放
1.栈内存存储的是局部变量而堆内存存储的是实体;
2.栈内存的更新速度要快于堆内存,因为局部变量的生命周期很短;
3.栈内存存放的变量生命周期一旦结束就会被释放,而堆内存存放的实体会被垃圾回收机制不定时的回收。