9.6 实例化中的内存分配
大家还记得类是值类型还是引用类型吗?如果记不太清楚了,可以翻阅相关章节,温故而知新嘛!类是引用类型,我们知道,引用类型是在堆里分配内存的,在栈中保存的是对象的引用。因此,类的实例化涉及两个位置的内存分配。
❑在栈中为对象的引用分配空间;
❑在堆中为对象分配空间。
一起来看看下面代码中的内存是如何分配的:
Car car=new Car();
这行代码看似简单,实则不然,其过程大致可分为两个步骤:
(1)首先,声明类型为Car的变量car,并使用null初始化,此时会在栈中为car变量分配一个内存,它指向null,因为在堆中还没有创建一个car对象实例以供它指向;
(2)其次,使用new运算符在堆中创建一个新的Car实例对象,并将其引用赋予变量car,此时栈中的car变量指向新创建的实例对象(见图9-7)。
图 9-7 实例化中的内存分配