【问题标题】:Does lua garbage collect upon an error?lua 垃圾会在错误时收集吗?
【发布时间】:2011-04-20 18:00:42
【问题描述】:

我有一个使用 lua 的 C++ 程序。 C++ 将引用计数数据类型公开为带有分配终结器的 userdata,以便 lua 可以获取这些值的所有权。

这很好用。但是有件事让我担心:如果在执行 lua 保存该数据类型实例的脚本时发生错误,那么会调用终结器吗?

问题的另一种表述是:lua 是否会在出错时运行垃圾回收周期?

【问题讨论】:

  • 请注意,如果您将 Lua 与 C++ 一起使用,您应该将 Lua 本身编译为 C++ 代码,或者非常小心对象的生命周期。在普通的 C 语言中,Lua 对任何错误(包括 C API 中的错误)执行longjump(),并产生所有预期的后果。

标签: c++ lua


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-05-04
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 2023-03-19
    • 2010-11-10
    • 1970-01-01
    • 2011-11-17
    • 2015-04-10
    相关资源
    最近更新 更多