我正在实现一个链表,直到我遇到
void StringLinkedList::removeFront(){
StringNode *old = head;
head = old -> next;
delete old;
}
我在想为什么不直接做head=head-
太谢谢你了。
C不像其他一些语言那样有自动垃圾回收机制,一旦存储不再被引用,就会释放存储。这有很多原因,关于这个主题的讨论可以在为什么C没有垃圾收集器?中找到。
这意味着new
ed必须是delete
d,否则您有泄漏。
说你有
如果在覆盖head
之前不删除
head的原始值,
节点1的地址不再为人所知,因此几乎不可能追踪分配以删除
它。这会强制泄漏。
但是如果您在重新指向它之前删除head
,
你不能head-
但是,如果您制作head
地址的临时副本,
old
在这种情况下,您可以安全地重新指向head
并且仍然有您需要删除
的分配地址存储在old
中。