我可以从堆栈中弹出参数吗?

时间:2017-12-13 23:42:05

标签: c lua

当编写一个旨在从lua调用的C函数时,我知道我可以使用像lua_tointeger等函数来获取我需要的参数。然而,这些功能只是从堆栈读取值,它们不会弹出它。

但在我的情况下,C函数获取的参数之一是我想在注册表中注册的对象。我需要调用luaL_ref来保存参数,然而这会从堆栈中弹出值(因此,它的行为与lua_to*函数不同。

那么,我是否需要将值推回堆栈以避免出现问题?

int r = luaL_ref(Lua::priv::L, LUA_REGISTRYINDEX);
lua_rawgeti(Lua::priv::L, LUA_REGISTRYINDEX, r); // <-- Do I need this?

无论有没有调用lua_rawgeti我都尝试过,似乎我的应用程序永远不会崩溃。

0 个答案:

没有答案