luaL_unref两次无害吗?
Is it harmless to luaL_unref twice?
当引用这样的值时:
lua_pushnumber(L, 1);
ref = luaL_ref(L, LUA_REGISTRYINDEX);
多次取消引用 ref
是否无害,或者这会导致问题吗?即对于上面的代码多次调用 luaL_unref(L, LUA_REGISTRYINDEX, ref)
是否无害,或者每个 luaL_ref
调用必须只有一个 luaL_unref
调用?
必须正好是一个luaL_unref
。
Lua 将未引用的索引保存在链表中,供 luaL_ref
稍后重用。
取消引用同一个索引两次将导致稍后从 luaL_ref
获取该索引两次。这意味着您将覆盖之前引用的数据。
参见 https://www.lua.org/source/5.4/lauxlib.c.html#luaL_unref
当引用这样的值时:
lua_pushnumber(L, 1);
ref = luaL_ref(L, LUA_REGISTRYINDEX);
多次取消引用 ref
是否无害,或者这会导致问题吗?即对于上面的代码多次调用 luaL_unref(L, LUA_REGISTRYINDEX, ref)
是否无害,或者每个 luaL_ref
调用必须只有一个 luaL_unref
调用?
必须正好是一个luaL_unref
。
Lua 将未引用的索引保存在链表中,供 luaL_ref
稍后重用。
取消引用同一个索引两次将导致稍后从 luaL_ref
获取该索引两次。这意味着您将覆盖之前引用的数据。
参见 https://www.lua.org/source/5.4/lauxlib.c.html#luaL_unref