Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Lua绑定到C++;垃圾收集_C++_Scripting_Binding_Lua_Swig - Fatal编程技术网

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

C++ Lua绑定到C++;垃圾收集,c++,scripting,binding,lua,swig,C++,Scripting,Binding,Lua,Swig,好的,我有个问题 我将Lua绑定到一个渲染引擎,该引擎有一个内部渲染管理器,该管理器为渲染场景保留自己的指针跟踪并管理它们。问题是,当我从Lua使用它时,如果我不把一个LUA引用引用到我添加到C++渲染管理器中的每个对象,它就开始垃圾收集指针,当然导致事情崩溃。我并不特别想保存我创建的每一个东西的每一个引用。有没有办法强迫Lua不要垃圾收集某些东西?有没有其他方法可以解决这个问题 我正在使用SWIG生成Lua绑定。防止Lua垃圾收集对象的一种简单方法是将该对象放入一个表中(称之为无法收集),然后

好的,我有个问题

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


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

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

您的另一个选择是对每个Lua对象使用额外级别的间接寻址,即使用“lightuserdata”。光用户数据指向指向C++对象的指针,即使收集了UsLoad数据,基础对象也不会受到破坏。 这些解释非常简洁,但我希望在的帮助下,您可以将其转换为工作代码