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需要自己管理分配和回收。

发布了70 篇原创文章 · 获赞 48 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/fwb330198372/article/details/82217022
LUA