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");