Lua & luabind を初めて使用しており、以下の問題について疑問に思っています。C++ でシングルトン クラスを宣言し、それを Lua にバインドすると、そのインスタンスを取得していくつかのメソッドを呼び出すと、どの言語が実際にインスタンスを所有するのでしょうか?
私が疑問に思っている理由は、現時点では、私のプログラムがシングルトン クラスのデストラクタでセグメンテーション違反を起こすことがあるからです。インスタンスがすでに破棄された後、Lua はそれをガベージ コレクションしようとしていますか? もしそうなら、どうすればそれを防ぐことができますか? 宣言は次のとおりです。
public:
static App* GetInstance();
~App();
void Execute();
private:
App();
Luaで私が呼び出す
app = App.getInstance()
app:execute()
すべてが終了すると、クラッシュします。ここで正確に何が起こっているのですか?
luabind はこんな感じです(多くのプロパティは省略されています)
module(L, "nge")
[
class_<App>("App")
.scope
[
def("getInstance", &App::GetInstance)
]
.def("execute", &App::Execute)
]