Java中的以下代码是否安全?我担心的是,在函数f()
变量arr
被分配到堆栈上,因此在离开作用域时被释放,但仍被引用到作用域之外。在java中使用范围以外的本地堆栈变量
public class Main {
public static class Array {
public final int[] arr;
public Array(int arr[]) {
this.arr = arr;
}
}
public static Array f() {
int arr[] = {1, 2, 3};
return new Array(arr);
}
public static void main(String[] args) {
Array a = f();
System.out.println(a.arr[0]);
System.out.println(a.arr[1]);
System.out.println(a.arr[2]);
}
}
的'arr'变量的寿命结束时'F'确实,但*阵列*的寿命是从可变的寿命分开。 – user2357112
您不必担心Java中的内存管理问题。如果您习惯于C++,请考虑智能指针。 – Dukeling
但仍然不是存储生命周期变量的变量引用的'Array'变量? –