黑马程序员技术交流社区

标题: 栈和堆 [打印本页]

作者: 邓江红    时间: 2014-4-2 17:21
标题: 栈和堆
栈是编译期间就分配好的内存空间,堆是程序运行期间动态分配的内存空间,但是不是很清楚具体的区别,哪位大神帮忙解答下!!!
作者: lmm    时间: 2014-4-2 18:47
值类型, 结构

int a
double b
这些都是编译时分配到栈空间中.
引用类型, 需要使用new关键字的, 如
int[] array = new int[];
这是运行时动态分配到堆空间中.
栈由系统自动分配,速度较快。但程序员是无法控制的。   
堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便.   

作者: redlong    时间: 2014-4-3 19:41
栈是编译期间就分配好的内存空间,所以在编译前你的代码中必须对栈的大小有明确的定义。局部值类型变量、值类型参数等都在栈内存中。例如:结构体
堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小。例如:类成员变量





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2