Lua垃圾收集与链表

时间:2018-04-23 20:49:56

标签: lua linked-list garbage-collection

我正在开发一个项目,我正在使用链接列表来跟踪某些对象。我总是在列表中添加新对象并删除旧对象。我似乎无法在此过程中摆脱内存泄漏。

function linkedlistClass:remove_destroyed()
local current = self.head
local before
for i=1,self.length do
    if current.value.destroyed then
        if current == self.head then
            self.head = self.head.next
            current.value = nil
        else 
            before.next = current.next
            current.value = nil
        end
        self.length = self.length - 1
    end
    before = current
    current = current.next
end
    self.tail.next = nil
end

所以这似乎是代码中有问题的部分。列表的长度肯定是正确计算的,因为我多次检查过。

列表由具有值和下一个属性的节点组成。值属性指向的对象具有布尔属性.destroyed,用于确定是否应该删除该对象。

调用该方法后,列表应该是自包含的。头部只指向应该的第二个元素,尾部指向nil,列表的长度表现得应该如此。

不知何外,没有收集遗漏的节点,这会导致内存泄漏。我似乎无法摆脱它们。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

好的,我怀疑其他人是否会遇到以下问题但是如果我猜的话就给我发消息。

事实证明我正在使用图书馆' hc'或者' hardon collider'我没有从场景中删除对象。