問題タブ [lua-5.3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
542 参照

c++ - Lua ライトのユーザーデータを適切に管理する方法

void *使用して Lua に渡す C++ で作成されたオブジェクトがありますlua_pushlightuserdata()。Lua は、Lua CFunctions に渡して で取得することにより、その軽いユーザーデータに対していくつかのアクションを実行できますlua_touserdata()。将来のある時点で、C++ オブジェクトはその所有者 (C++) によって破棄され、メモリが解放され、null に設定されます。ただし、Lua はまだこのポインターへの参照を保持しており、破棄されたことを認識していません。

これで、このユーザーデータを受け取る Lua 関数は、ポインターが有効であることを確認します。しかし、ライト ユーザーデータへの参照が有効でなくなったことを Lua に通知するには、どのような方法が最適でしょうか? IsValid(lightuserdata)ステータスを照会できるように関数を Luaに公開しますか? または、私が見逃しているより良いアプローチがありますか。