由于我是c/c++转来学JAVA的,因此对JAVA当中的内存机制有点疑问。在c++当中运用子函数对指向空地址的指针进行内存分配需要特殊的打理(指针的指针),因此我在JAVA当中试一试JAVA行不行,发现JAVA也不行,可以通过编译但是出现了以下的错误:
Exception in thread "main" java.lang.NullPointerException
at no_2.main(no_2.java:13)
下面附上我的程序代码,很简单的:
class nothing{
static void malloc(int []a){
a = new int[10];
for(int x: a)
x=1;
}
}
class no_2{
public static void main(String[] args){
System.out.println("Hello! this is a program to test malloc memory in a function");
int []a = null;
nothing.malloc(a);
for(int x:a)
System.out.println("the value is " + x );
}
敢问JAVA是怎么做这件事的呢?
JAVA里面关于数组分配内存的一个问题
关注:219 答案:2 手机版
解决时间 2021-01-16 07:19
- 提问者网友:我不想放过你
- 2021-01-16 03:16
最佳答案
- 二级知识专家网友:守給你的承諾
- 2021-01-16 04:06
数组不是对象,a作为变量传递给malloc方法后只是复制了一份到方法体里面,而原来的局部变量a仍然是null。
全部回答
- 1楼网友:热情烫伤我自
- 2021-01-16 05:35
下面这种只有一个变量的占内存少
上面的数组,在你开始循环之前,必须先分配10个contact类型的变量空间出来,
但是下面那样做只是用了1个contact类型空间
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!