3
我知道Lua是gc-ed。我知道Lua可以通过userdata处理c对象。gc-lua对象上的析构函数
这里是我的问题:是否有无论如何注册一个函数,以便它的被称为当一个C userdata对象被guaid由lua? [基本上是析构函数]。
谢谢!
我知道Lua是gc-ed。我知道Lua可以通过userdata处理c对象。gc-lua对象上的析构函数
这里是我的问题:是否有无论如何注册一个函数,以便它的被称为当一个C userdata对象被guaid由lua? [基本上是析构函数]。
谢谢!
是的,有一个metamethod专门为此目的调用__gc
。有关更多详细信息,请参见Programming in Lua (PIL)的Chapter 29 - Managing Resources。
以下代码段创建一个metatable并注册__gc
元方法回调:
luaL_newmetatable(L, "SomeClass");
lua_pushcfunction(L, some_class_gc_callback);
lua_setfield(L, -2, "__gc");