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

ano*_*non 3 lua garbage-collection

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

这里是我的问题:反正有这样,当一个C用户数据对象被LUA GC-ED这就是所谓的注册功能?[基本上是析构函数].

谢谢!

Jud*_*den 7

是的,有一元方法称为__gc专门用于这一目的.有关更多详细信息,请参见第29章 - 管理Lua中编程资源(PIL).

以下代码段创建了一个metatable并注册了一个__gcmetamethod回调:

  luaL_newmetatable(L, "SomeClass");

  lua_pushcfunction(L, some_class_gc_callback);
  lua_setfield(L, -2, "__gc");
Run Code Online (Sandbox Code Playgroud)