堆栈的区别:
1、堆空间的内存是动态分配的、一般存放对象、并且需要手动释放内存。
2、栈空间的内存是由系统自动分配、一般存放局部变量等、不需要手动管理内存。
从管理方式来讲:
○ 对于栈来讲,是由编译器自动管理,无需我们手工控制;
○ 对于堆来说,释放工作由程序员控制,容易产生内存泄露(memory leak)
从申请大小大小方面讲:
○ 栈空间比较小
○ 堆空间比较大
从数据存储方面来讲:
○ 栈空间中一般存储基本类型,对象的地址
○ 堆空间一般存放对象本身,block的copy等