C++、lua5.1、luabind 0.7を使用
ルアコード:
-- allocates near 8Mb of memory
function fff()
local t = {}
for i = 1, 300000 do
table.insert(t, i)
end
return t
end
C++ コード:
{
luaL_dostring(lua_state, "return fff()");
luabind::object obj(luabind::from_stack(ls, -1));
}
lua_gc(l_, LUA_GCCOLLECT, 0); // collect garbage
結果: Lua にはまだ 8Mb のメモリが割り当てられています。ガベージ コレクションは、そのテーブル オブジェクトを無視します。それはどこかに参照がありますか?しかしここで?そのテーブルは、プログラムの終了時 (「lua_close」関数が呼び出されたとき) にのみ割り当てを解除します。この問題を解決するには?
ありがとうございました。