C定义变量时是怎样分配内存得?是在定义时还是在初时化时?java数组得内存分配是在什么时候? 10

请以如下例子详解:c:inti;i=0;java:int[]array1;int[]array2={1,2,3};array1=newint[3];array[0]=..... 请以如下例子详解:
c: int i;i=0;
java:int []array1;
int []array2={1,2,3};
array1=new int[3];
array[0]=......
..........
是不是这样:对于C,编译过程中,在变量被定义时依其类型分配一定空间。而对于java,声明变量并不得到空间,解释到初始化语句,变量才得到相应得空间?对于数组呢?
C语句: int array[];对于这个定义数组的语句,是无法分配空间的,我们无法知道元素个数,而int array[]={0};和int array[5]={0};从空间分配的角度分别怎样理解?是不是不合法的对于int array[]={0};??
展开
 我来答
斌馥6829
2007-01-11 · TA获得超过568个赞
知道小有建树答主
回答量:545
采纳率:0%
帮助的人:597万
展开全部
定义的时候,在初始化之前这个内存里的数是随机的。
用 new 来分配的时候是在运行的时候,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
m3329
2007-01-11 · TA获得超过102个赞
知道答主
回答量:124
采纳率:0%
帮助的人:0
展开全部
C语言里,未赋值的全局变量是被放在bss段,赋值的全局变量被放在data段,他们都是在运行前就被分配的,bss段会被清零。局部变量建立在线程的栈上,在离开局部变量生存期后空间就可以被复用。所谓的new/delete并非真的创建出新的内存,不过是向内存管理模块申请和释放了一段空间,通常的内存管理模块从系统的堆中分配。
Java运行在虚拟机空间,所以其内存的分配是由虚拟机来完成的,通常的虚拟机在初始化时,已经分配的一定的内存空间,所谓的创建与析构,以及垃圾回收,都是针对该内存空间进行的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式