gpt4 book ai didi

c++ - Lua 绑定(bind)到 C++ 和垃圾回收

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:23:03 24 4
gpt4 key购买 nike

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

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

我正在使用 SWIG 生成 Lua 绑定(bind)。

最佳答案

防止 Lua 对对象进行垃圾回收的一个简单方法是将该对象放入一个表中(称之为 uncollectiontable),然后将该表放入 Lua 注册表中。

您的另一个选择是对每个 Lua 对象使用额外的间接级别,即使用“light userdata”。 light userdata指向一个指向C++对象的指针,即使收集了light userdata,底层对象仍然毫发无损。

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

关于c++ - Lua 绑定(bind)到 C++ 和垃圾回收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1114991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com