【问题标题】:How to check if a lua_state is closed?如何检查 lua_state 是否关闭?
【发布时间】:2021-05-03 05:52:18
【问题描述】:

我想检查一个 lua_state 是否关闭。我怎样才能检查它?我将此库用作 c++ lua 嵌入器:https://github.com/lua/lua

【问题讨论】:

  • 为什么需要检查这个?这似乎是一个 XY 问题。

标签: c++ lua embedding


【解决方案1】:

在 lua 中关闭 lau_State 会释放所有分配的内存,包括 lua_State 本身。

来自 Lua 5.4.2 源代码:

static void close_state (lua_State *L) {
  global_State *g = G(L);
  ...
  (*g->frealloc)(g->ud, fromstate(L), sizeof(LG), 0);  /* free main block */
}

表示关闭的lua_State指向无效内存。

因此,由您来管理线程或异步任务中的open/closed 状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 2012-03-08
    • 2010-11-26
    • 1970-01-01
    相关资源
    最近更新 更多