这是我的理解。
在 C 编程中,如果我执行 int a
那么 a
是在堆栈上创建的,因此内存是从堆栈中获取的。堆在这里不起作用。
但是如果我做类似的事情
int *a;
a=(int*)malloc(sizeof(int));
然后动态分配内存,那么引用变量会被放到栈上,但是它指向的内存会在堆上。
我的理解正确吗?
现在,我拿起这本关于 java 的书,上面写着
Whenever you need an object, you simply write the code to create it by using new, and the storage is allocated on the heap when that code is executed.
那么在 Java 中没有办法在 Stack 上创建对象吗?
我想,原始数据类型仍然可以放在堆栈上,但我关心的是对象。
最佳答案
在 Java 中无法在堆栈上创建对象。 Java 也有自动垃圾收集,所以你没有办法删除对象。您只需让对它们的所有引用都超出范围,最终垃圾收集器会处理它们。
关于java - C/Java 中的堆栈与堆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17535436/