lua_next在LUA_ENVIRONINDEX上导致段错误?

以下 C 程序使用 Lua API 的 lua_next 函数尝试开始迭代 LUA_ENVIRONINDEX 表,在调用 lua_next 时崩溃...

#include <lua5.1/lua.hpp>

int main() {
  lua_State* L = luaL_newstate();
  lua_pushnil(L);
  lua_next(L, LUA_ENVIRONINDEX);
}

有什么想法吗?

点赞
用户107090
用户107090

根据 手册LUA_ENVIRONINDEX 表示“正在运行的 C 函数的环境”。在你的代码中,没有 Lua 中的“正在运行的 C 函数”:main 没有从 Lua 中被调用。

lua.c 为例。如果将你的代码放在 main 中,则会出现程序崩溃,正如你自己发现的。但如果将你的代码放在被从 Lua 中调用的 pmain 中,则不会出现崩溃。

2020-08-06 10:59:00