我有以下的C++代码:
lua_getglobal(C, "theTable");
lua_pushnil(C);
while (lua_next(C, -2) != 0) {
/* snip */
}
然而,在运行时,会报告一个段错误。LLDB停止信息如下。
* thread #1: tid = 0x50663f, 0x000000000002b36a luaos`luaH_next + 58, queue =
'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x38)
frame #0: 0x000000000002b36a luaos`luaH_next + 58
Luaos 是可执行文件的名称。我已经将 Lua 直接编译到可执行文件中,以实现可移植性。
附注:`C` 是 Lua 状态的名称。它是我的次要配置 Lua 状态(与我的主要代码 Lua 状态 `L` 相对),这就是取名字的原因。
lua_tostring
吗?根据手册的说明,这可能会让lua_next
函数产生混淆。 - lhf