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'變量? –