次の例を使用します。
int r = luaL_ref(L, LUA_REGISTRYINDEX);
r
スタック上のオブジェクトへの強い参照になります。
スタックの一番上のオブジェクトへの弱い参照を取得することは可能ですか?
私が考えていたアプローチの 1 つは、弱い値を持つテーブルを作成し、それをグローバル レジストリ内に格納することです。次に、弱い値が必要なときにそれを使用します。
もっと簡単なアプローチはありますか?
Lua 2.4 のドキュメントにはこれがありましたが、luaL_ref
現在は動作が異なるようです。
関数 lua_ref は、スタックの一番上にあるオブジェクトへの参照を作成し、この参照を返します。lock が true の場合、オブジェクトはロックされます。つまり、オブジェクトはガベージ コレクションされません。