完整的userdata __gc元方法需要释放它的内存吗?

我在 C 写的 Lua 模块中有一个完整的 userdata。该 userdata 有一个 __gc() 元方法,由垃圾回收器调用。Lua 解释器在调用 __gc() 后是否释放 userdata 内存,还是我需要在 __gc() 中手动调用 free() 释放内存?

原文链接 https://stackoverflow.com/questions/221106

点赞
stackoverflow用户11215
stackoverflow用户11215

你不应该释放内存,因为你没有自己使用 malloc() 函数分配内存;Lua会为你完成这个过程。事实上,如 Lua 5.1 参考手册 中的 2.10.1 小节所解释的那样,内存甚至不会在同一垃圾回收循环中被回收。

2008-10-21 09:32:55