吗
public void addToHead(IntNode node) {
IntNode temp = _head;
_head = node;
node.setNext(temp);
}
编辑:我搜索了youtube,nothig在那里ronkedlist和堆垃圾收集器什么时候擦除temp
?我知道应该,但看不到哪里。
我很难理解它。直觉我只是写
_head = node;
我知道这是不对的,但是我觉得我需要用对象和地址来理解那里发生了什么以获取重点...
第一行:我创建一个温度,并将其指向相同的adress _head点
秒线:现在头指向adress节点点,(node.next等于head.next)
第三行:现在node.next变为温度..
我是对的
这可以如下:
-
node
在堆栈上,并引用了您要插入的堆(a) -
_head
大概是堆对象的成员(列表),并引用了当前位于列表头的堆(b)。 - 您在堆栈上创建参考
temp
,然后引用该对象(b) - 您将参考
_head
更改为node
引用的堆,因此_head
现在参考(a) - 您现在修改(a),由
_head
和node
引用,以其next
-Member参考(B) - (a)和(b)的参考计数一直至少为一个,因此GC都不在任何一个上运行。
- 退出函数后,收回了引用的堆栈记忆,并且只要引用了堆对象。
- 从函数重新调整后,只要您的列表仍然存在,(a)由列表头引用,(b)由(a)的
next
-ember(a)引用,等等,依此类推,因此,垃圾收集没有任何要求。