gpt4 book ai didi

c++ - luabind::object 取消引用的问题(简化)

转载 作者:行者123 更新时间:2023-11-30 04:39:51 26 4
gpt4 key购买 nike

使用C++lua5.1luabind 0.7

Lua代码:

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

谢谢。

最佳答案

如果您使用的代码与发布的完全一样,我会说 Lua 堆栈中仍然有引用。尝试在 luabind::object 创建和 lua_gc 调用之间插入一个 lua_pop(l, 1) 。

顺便说一下,目前 luabind 的稳定版本是 0.8.1,还有 0.9-rc;如果您使用的是当前版本(此处和 luabind-users 组),您可能会得到更多答案

关于c++ - luabind::object 取消引用的问题(简化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1934238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com