使用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”函数时)。如何解决这个问题呢?
谢谢你。