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

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

但在我的情况下,C函数得到的一个参数是我想要注册到注册表中的一个对象。我需要调用luaL_ref来保存该参数,但luaL_ref从栈中弹出该值(因此,它与lua_to *函数不同)。

所以,我需要将该值推回栈中以避免问题吗?

int r = luaL_ref(Lua::priv::L, LUA_REGISTRYINDEX);
lua_rawgeti(Lua::priv::L, LUA_REGISTRYINDEX, r); // <-- 我需要吗?

我尝试了有和没有调用lua_rawgeti,在任一情况下似乎我的应用程序都不会崩溃。

点赞