Lua userdata和lightuserdata

userdata和lightuserdata
可以讓C返回一個句柄給Lua,而Lua可以將句柄再通過在C中註冊的方法傳回C

userdata:
userdata通過Lua的API(lua_newuserdata())分配內存,就像C裏的malloc()函數分配內存,
但不需要調用free()去釋放內存,該內存是由LUA的GC機制進行回收。

lightuserdata:
lightuserdata通過LUA的API(lua_pushlightuserdata())創建,返回一個指針。
當你需要把這個一個C的對象傳到LUA裏,並且需要自己管理這個指針時,lightuserdata就很適用了。
但是,這個C對象是需要自己管理,LUA並不會幫忙回收。
例如Cocos2d-x擁有自己的GC機制,使用lightuserdata把數據對象的指針傳到LUA裏。

區別:
1.userdata是由LUA的GC機制進行回收
2.lightuserdata需要自己管理分配和回收。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章