数组的内存使用
程序员文章站
2022-03-06 08:21:02
...
数组的内存使用首先要引入一个内存简略的概念
栈(srack) 每一个线程包含一个stack区,只保存基本数据类型的对象和自定义对象的引用
堆 (heap) 存储的全部是对象,每个对象都包含一个与之对应的class的信息
当我们定义一个数组时候 定义的这个数组进入栈;
当将其实例化new的时候 会在堆开辟内存 用于存储数组;
这时候 栈中定义的数组就会得到堆中开辟数组对象所在的地址
如图所示
当数组得到了其在堆中对应的地址的时候,就会通过这个地址去寻找堆中所对应的数据;
可以通过以下实例说明
int[] array1;
array1=new int[3];
array1[0]=1;
array1[1]=2;
array1[2]=3;
这段代码中 首先定义一个数组 这死后栈中就保存了这个数组array1;
当arry1=new int【3】的时候这个数组就被实例化 此时在堆中开辟数组空间,此时栈中的arry1 获得了其对应在堆中的地址;
再通过栈中对应的地址 去寻找堆中的数据进行赋值;
如图
所以如果当有两个数组如array1和array2建立,并且array2=array1;时 那么这两个数组栈中的地址都指向array1,对他们两个进行赋值的时候 后者会将前者覆盖掉;
此时array1中的数为 1 2 3;
当array2=array1的时候 在对其进行赋值 则 之前aray1中的数变成了 4 5 6
以上小白的是个人理解,如有有什么不对的地方欢迎各位大佬指点
推荐阅读
-
python 使用正则表达式按照多个空格分割字符的实例
-
手把手教你使用 virtualBox 让虚拟机连接网络的教程
-
Vue中 Vue.component() 的使用
-
C++ —— 非类中使用const定义常量的初始化,以及#define和typedef的区别
-
学习python的第十八天(模块导入及使用,关键字,模块搜索路径,python文件的两种用途)
-
css中相对定位和绝对定位的介绍与使用
-
angular的路由ui-router的使用详解
-
知方可补不足~sqlserver中触发器的使用
-
使用 doctrine orm 如何在程序逻辑上实现在一张表完成两个外键的设置(或则说一个实体完成两个多对一的关系)?
-
如何使用php绘制在图片上的正余弦曲线_PHP