gc-ed lua对象上的析构函数

时间:2010-04-30 11:58:37

标签: lua garbage-collection

我知道Lua是gc-ed。我知道Lua可以通过userdata来处理c对象。

这是我的问题:无论如何要注册一个函数,以便当一个C userdata对象被lua gc编辑时调用它? [基本上是析构函数]。

谢谢!

1 个答案:

答案 0 :(得分:7)

是的,有一个名为metamethod__gc专门用于此目的。有关详细信息,请参阅Chapter 29 - Managing ResourcesProgramming in Lua (PIL)

以下代码段创建了metatable并注册了__gc元方法回调:

  luaL_newmetatable(L, "SomeClass");

  lua_pushcfunction(L, some_class_gc_callback);
  lua_setfield(L, -2, "__gc");