Lua-具有链接列表的垃圾收集

Lua-具有链接列表的垃圾收集,lua,linked-list,garbage-collection,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

我正在做一个项目,我使用一个链表来跟踪一些对象。我不断地向列表中添加新对象并删除旧对象。不过,在这个过程中,我似乎无法消除内存泄漏

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
所以这似乎是代码中有问题的部分。列表的长度肯定是正确的,因为我已经检查了多次

该列表由具有value和next属性的节点组成。value属性指向的对象具有布尔属性。destroyed属性决定是否应删除该对象

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

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


提前感谢您的帮助。

好的,我怀疑其他人是否会有以下问题,但如果您有,我想请给我留言


事实证明,我使用的是库“hc”或“hardon collider”,没有从场景中移除对象。

您是否尝试调用collectgarbage()?是的,当然,我实际上是通过collectgarbage(“计数”)测量内存泄漏。1。请正确缩进代码。2.我们需要看到更多的代码来缩小所发生的事情。请阅读。您使用的外部库将是有价值的信息。我想你可以删除你的帖子。这对其他任何人都没用