luaL_unref 可以被多次调用吗?

当引用一个值时,像这样:

lua_pushnumber(L, 1);
ref = luaL_ref(L, LUA_REGISTRYINDEX);

ref 是否可以被多次卸载或是否会导致问题?换句话说,对于上述代码,多次调用 luaL_unref(L, LUA_REGISTRYINDEX, ref) 是否无害或必须为每个 luaL_ref 调用使用一个 luaL_unref 调用?

点赞
用户1847592
用户1847592

必须恰好有一个 luaL_unref

Lua会将未引用的索引保存在一个链表中,以便稍后由luaL_ref重新使用。

对相同的索引进行两次未引用将导致从 luaL_ref 两次获得该索引。这意味着您将覆盖之前引用的数据。

请参阅https://www.lua.org/source/5.4/lauxlib.c.html#luaL_unref

2021-05-05 11:56:29