2011-04-20 86 views
1

我有一个使用lua的C++程序。 C++使用指定的终结器将引用计数数据类型公开为userdata,以便lua可以获取这些值的所有权。lua垃圾收集错误?

这工作正常。但有一件事让我担心:如果在lua持有该数据类型的实例时发生执行脚本的错误,那么会调用终结器?

问题的另一个表述是:lua是否在出错时运行垃圾回收循环?

+0

请注意,如果你在C++中使用Lua,你应该将Lua本身编译为C++代码,或者对于对象的生命周期非常小心。在普通的C中,Lua会对任何错误(包括C API中的错误)进行'longjump()',并带来所有预期的后果。 – 2011-04-20 10:42:15

回答

3

是的,如果错误发生在受保护的调用中,一切都会继续正常运行。如果Lua惊慌失措,那么Lua状态不是可用状态。