当编写一个旨在从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
我都尝试过,似乎我的应用程序永远不会崩溃。