我正在开发一个项目,我正在使用链接列表来跟踪某些对象。我总是在列表中添加新对象并删除旧对象。我似乎无法在此过程中摆脱内存泄漏。
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,列表的长度表现得应该如此。
不知何外,没有收集遗漏的节点,这会导致内存泄漏。我似乎无法摆脱它们。
提前感谢您的帮助。
答案 0 :(得分:0)
好的,我怀疑其他人是否会遇到以下问题但是如果我猜的话就给我发消息。
事实证明我正在使用图书馆' hc'或者' hardon collider'我没有从场景中删除对象。