几次编写lua时。总是有同事遇到A中对象已经释放了。但B对象中A对象的值不是为空的。
Lua的gc和Java的类似。只有当对象没有被引用时候才会释放这块内存。要想实现A释放了B中A的值也释放了这时候需要用到弱引用。
setmetatable(t,{__mode="k"});
__mode 的值可以为"k","v","kv"
~ ~第一段代码中可以看到内存中是有一个[key]保存了一个table。虽然b=nil了但是t中还是存在了这一个条目。
~ ~第二段代码中可以看到[key]不在拥有table了。