让我们看下面的代码。
do
local a = {1,2,3}
function a:doSth()
self = nil
end
a:doSth()
if a then
print("Still has a...")
end
end
我发现这种方法不起作用。表格a
仍然存在,为什么呢?
我知道a=nil
可以回收表格a
所占用的内存。
如何直接获取由表格a
持有的内存并释放内存,就像C++中的delete
一样?
nil
,然后调用collectgarbage()
。 - greatwolfnil
。你只需要停止引用该表即可。一种方法是限制变量的作用域。另一种方法是将其设置为新表,这使您可以编写假定始终引用某个表的代码。 - Tom Blodget