加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Lua绑定到C和垃圾收集

发布时间:2020-12-15 00:26:33 所属栏目:大数据 来源:网络整理
导读:好的,这是我遇到的问题. 我有一个渲染引擎的Lua绑定,它有一个内部渲染管理器,可以自己跟踪渲染场景的指针并管理它们.问题是,当我从Lua使用它时,如果我没有对我添加到C渲染管理器的每个对象保留Lua引用,它就会开始垃圾收集指针,当然会导致崩溃.我并不特别想要
好的,这是我遇到的问题.

我有一个渲染引擎的Lua绑定,它有一个内部渲染管理器,可以自己跟踪渲染场景的指针并管理它们.问题是,当我从Lua使用它时,如果我没有对我添加到C渲染管理器的每个对象保留Lua引用,它就会开始垃圾收集指针,当然会导致崩溃.我并不特别想要保存我创建的每一件事的每一个引用.有没有办法迫使Lua不垃圾收集某些东西?还有其他方法可以解决这个问题吗?

我正在使用SWIG生成Lua绑定.

解决方法

防止Lua垃圾收集对象的一种简单方法是将该对象放入表中(称之为无法收集),然后将该表放入Lua注册表中.

你的另一个选择是对每个Lua对象使用额外的间接级别,即使用“light userdata”. light userdata指向指向C对象的指针,即使收集了轻用户数据,底层对象仍然没有受到损坏.

这些解释非常简洁,但我希望在Programming in Lua的帮助下,您可以将其转换为工作代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读