栈是在编译的时候确定的,堆是在运行的时候确定的。
栈的大小在编译的时候已经定好了,堆可能是一个动态变化的概念,主要取决于运行计算时的数据,所以栈的速度快,堆的速度慢。根据不同的需求选择使用堆还是使用栈。
访问权限:
栈:函数调用里面的数据都在栈上,不同函数间的栈数据不能共享。
堆:在application内,所有的线程都可以访问堆上的数据