在我遇到
之前,我正在实施链接列表button#payNewBeneficiary div div
button#payNewBeneficiary div
button#payNewBeneficiary h2
button#payNewBeneficiary p
我想知道为什么不只是head = head-> next(而不是head = old-> next),当没有任何东西指向前一个地址时,这会如何创建内存泄漏(从头部开头)节点现在指向下一个节点。)
非常感谢你。
答案 0 :(得分:4)
C ++没有自动垃圾收集,就像其他语言一样,一旦不再引用就会释放存储。这有很多原因,可以在Why doesn't C++ have a garbage collector?中找到关于该主题的讨论。
这意味着new
ed必须为delete
d或您有泄漏。
说你有
如果在覆盖delete
之前没有head
head
的原始值,
节点1的地址不再为人所知,因此几乎无法追踪分配以便delete
它。这会导致泄漏。
但如果您在重新指点之前delete head
,
你不能head->next
找到下一个节点,你就会丢失并泄漏整个列表。
但是,如果您制作head
地址的临时副本,
old
在这种情况下,您可以安全地重新指向head
并且仍然拥有delete
中存储的old
所需的分配地址。