详细可以查看这篇文章:https://www.cnblogs.com/qingtianMo/p/5255121.html
- 栈保存代码执行(调用)的路径,堆负责保存对象(数据)
- 栈相当于摞盒子,进入一个方法时就在顶部增加一个盒子,出一个方法时就拿掉顶上的一个盒子,所以是先进后出。堆相当于散乱丢在床上的衣服,可以随意拿去任意衣服没有限制。
- 栈是内存自动维护的。堆是垃圾回收机制进行维护的(可以人为手动维护)。
- 引用类型总是放在堆中。
- 值类型和指针总是分配在被定义的地方,他们不一定被分配到栈上。例如类中成员int a=1;那么这个a就是在堆中。