RT,不过,栈的空间很小,做好还是放在堆里,所以一般类定义对象时都是new一个。
但是java里好像必须new,否则就没有跟对象分配空间,只是给引用变量分配了引用空间。
=========
请问C++ 生成对象用栈空间和堆空间和什么区别?用堆空间有什么优势吗?我可懒得去new又去delete。
答:
请问内存有多少个栈呀?普通变量申请的空间也是栈空间吗?
回答
一个线程只有一个栈,这个栈的大小取决于操作系统以及这个线程的创建者,一般都很小。 在函数内部直接定义的变量都是栈上分配空间的,如: int func() { int i, j; double k; char m[256]; object x; } 这里面的这些变量都是在栈上分配空间的。同一个线程的所有函数共用一个栈,当一个函数结束时其内部栈上分配的空间自动回收。因此如果函数调用递归层数太深,每一层都要分配空间,也因为栈空间不足而形成栈溢出。