new和malloc的区别以及底层实现原理_c++new和malloc的区别

new和malloc的区别以及底层实现原理_c++new和malloc的区别java中new运算符、数组与C语言malloc关键字在学习数组的时候注意到java中定义一个数组时可以不直接指定数组的长度,比如:这在C中无论如何是无法编译通过的,为什么呢?因为C语言在定义数组长度的时候同时在内存中开辟了相应大小的空间,不指定数组的长度系统无法为数组申请空间;而java则

java中new运算符、数组与C语言malloc关键字   在学习数组的时候注意到java中定义一个数组时可以不直接指定数组的长度,比如:   这在C中无论如何是无法编译通过的,为什么呢?因为C语言在定义数组长度的时候同时在内存中开辟了相应大小的空间,不指定数组的长度系统无法为数组申请空间;而java则是将命名和申请内存空间两步操作相互分离的。上面的语句中在java中仅仅是为将要使用的数组起了一个名字(即引用变量),但实际上它在内存中是不存在的。   当我们要让数组在内存中存在的时候,就要使用new来创建一个对象,如果这样来考虑new的话,实际上它的功用就和C语言中的malloc非常相似了。   比如我们想用C创建一个链表:   上面的程序声明了一个指针s就相当于java中声明了一个引用变量array。刚刚声明s的时候,s指向NULL,将要创建的链表并不存在。同理刚刚声明array的时候,仅仅也只是一个引用变量,数组也并不存在。   C语言使用malloc关键词在内存中创建一个结点的内存空间,java则用new,可以粗浅地认为new在内存中开辟了空间并将此空间的首地址传给引用变量array——这和指针是大同小异的。   用new关键字动态创建数组的方法:   由于java不支持静态定义数组,所以下面在C中理所当然的代码在java中是错误的。   另外,如果   则词句代码输出的是数组a的地址,也就是首素的地址,这和C是一样的。   为了应对程序员可能未必清楚数组的长度的情况,java内置了.length方法能够让程序员方便地获得数组的长度。   而相比之下C要实现这种操作只能是sizeof(a)/sizeof(int)才能得到数组的长度,java这一功能可以说是非常方便了。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/60829.html

(0)
上一篇 2024年 8月 29日 下午3:18
下一篇 2024年 8月 29日 下午3:21

相关推荐

关注微信