我想知道有没有办法将结构指针传递给lua脚本,并从lua到达它的成员而不复制(用于读写目的).
那么,例如是否可以直接通过其指针覆盖ac结构的成员?
(我正在使用luajit)
除了蒂姆的答案,你还可以选择轻量级的用户数据.你不会在Lua堆栈中得到数据的副本,所有你推送到Lua的都是一个指针.
Lua不知道这个指针是什么,它是否仍然指向有效的内存,或者如何访问这个指针中的任何对象,所以你必须自己在C中处理所有这些.我通常发送一个指针列表中的项目,所以如果从列表中删除条目有任何风险,我首先遍历列表以验证指针(如果您的列表很短,则不是很重要).要访问Lua中指针内的项目,您需要在C中编写可以从Lua调用的get/set函数.
首先,以下是推送和检索lightuserdata的条目: