首页 > 编程语言 > 详细

【8.0】关于Java和c的动态数组问题

时间:2017-08-30 12:37:47      阅读:210      评论:0      收藏:0      [点我收藏+]

1.java:

java本身是没办法实现动态数组的,这个java本身不直接操作指针有关系【虽然我觉得理论上应该是和c一样,可以办到的,但java不提供,具体原因等知道了再补充】。那么java的集合例如ArrayList集合这样的是如何实现“动态数组”的呢。其实原理是:ArrayList的底层是一个数组a【Object[] a = new Object[]】, 如果需要改变ArrayList的大小,则丢弃ArrayList原先对a的引用, 然后new一个新的数组[ Object[] b = new Object[], 长度自定义],并引用之。

2.c语言:

原理:

(1)动态数组--创建,使用malloc函数:malloc的作用是在内存中动态分配一个自定义长度的连续空间;

(2)动态数组--改变数组的大小,使用relloc函数:relloc的作用是:

  a) 减少数组长度:当数组所在内存本身有剩余空间时,可按需将其本身的尾部内存拿掉【说明:对内存的操作限定在该数组所分配的内存块内】;

  b)增加数组长度:当数组所在内存的尾部有多余空间时,按需直接在原先的内存块尾部新增内存;如果原先的内存尾部空间不足,则relloc重新分配一块新的内存空间,并把原先内存的内容复制到新的内存块 上。

【8.0】关于Java和c的动态数组问题

原文:http://www.cnblogs.com/chxbar/p/7452309.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!