当前位置:  开发笔记 > 编程语言 > 正文

Lua绑定到C++和垃圾收集

如何解决《Lua绑定到C++和垃圾收集》经验,为你挑选了1个好方法。

好的,这是我遇到的问题.

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

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



1> Norman Ramse..:

防止Lua垃圾收集对象的一种简单方法是将该对象放入表中(调用它uncollectable),然后将该表放入Lua注册表中.

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

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

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有