【问题标题】:destructors on gc-ed lua objectsgc-ed lua 对象上的析构函数
【发布时间】:2010-04-30 21:47:23
【问题描述】:

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

这是我的问题:无论如何要注册一个函数,以便在 lua 对 C 用户数据对象进行 gc-ed 时调用它? [基本上是一个析构函数]。

谢谢!

【问题讨论】:

    标签: lua garbage-collection


    【解决方案1】:

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

    下面的 sn-p 创建一个metatable 并注册一个__gc 元方法回调:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-08
      • 2011-02-25
      • 2016-02-10
      • 1970-01-01
      • 2022-11-13
      • 2012-12-26
      • 2016-01-29
      • 2010-10-08
      相关资源
      最近更新 更多