大家好!c++中,一个函数内部这样写:int* fun(){ int nums[] = { 4,5,6}; return nums;} 那么除非nums加static修饰,否则函数结束后nums的内存会被释放,外部不能再用。Java中这样写: public static int[] ByNew() { int[] nums= new int[] { 1,2,3 }; return nums; }当然没问题,new出来的数组不用担心函数结束后内存被释放但是如果这样写呢: public static int[] ByStaticInit() { int nums[] = { 4,5,6}; return nums; } 我担心数组存放在栈内存,函数结束后内存被释放,不知道是不是这样?请大家指教。(尽管下面测试代码运行没问题)public class StaticInitArry { public static int[] ByNew() { int[] nums= new int[] { 1,2,3 }; return nums; } public static int[] ByStaticInit() { int nums[] = { 4,5,6}; return nums; } public static void main(String[] args) { int nums[] =ByNew(); for(int i=0;i<nums.length;i++) { System.out.println(nums[i]); } ////////////////////////////////////////// int nums2[] =ByStaticInit(); for(int i=0;i<nums2.length;i++) { System.out.println(nums2[i]); } } }
添加回答
举报
0/150
提交
取消