217人参与 • 2024-05-19 • Lua
在lua中可以通过自定义类型的方式与c语言代码更高效、更灵活的交互。这里我们通过一个简单完整的示例来学习一下lua中userdata的使用方式。需要说明的是,该示例完全来自于programming in lua。其功能是用c程序实现一个lua的布尔数组,以提供程序的执行效率。见下面的代码和关键性注释。
轻量级userdata:
之前介绍的是full userdata,lua还提供了另一种轻量级userdata(light userdata)。事实上,轻量级userdata仅仅表示的是c指针的值,即(void*)。由于它只是一个值,所以不用创建。如果需要将一个轻量级userdata放入栈中,调用lua_pushlightuserdata即可。full userdata和light userdata之间最大的区别来自于相等性判断,对于一个full userdata,它只是与自身相等,而light userdata则表示为一个c指针,因此,它与所有表示同一指针的light userdata相等。再有就是light userdata不会受到垃圾收集器的管理,使用时就像一个普通的整型数字一样。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论