gpt4 book ai didi

memory-leaks - 在 Lua 中丢失引用

转载 作者:行者123 更新时间:2023-12-04 04:39:48 24 4
gpt4 key购买 nike

对象有问题,不再需要但仍然有引用。结果:由于未收集对象,分配的内存大小不断增加。

如何解决这类问题?有什么方法可以找到只有一个引用的对象,或者生命周期超过某个值的对象?或者任何其他解决方案?

将 Lua 5.1 和 C++ 与 luabind 结合使用。

谢谢。

最佳答案

正如有人在这里提到的,您可以尝试使用 weak tables .

如果你有这样的代码:

myListOfObjects = {}
...
table.insert(myListOfObject, anObject)

一旦 anObject 停止使用,它将永远不会被释放,因为 myListOfObjects 仍然引用它。

您可以尝试删除 myListOfObjects 中的引用(将引用设置为 nil),但更简单的解决方案是将 myListOfObjects 声明为弱表 :

myListOfObjects = {}
setmetatable(myListOfObjects, { __mode = 'v' }) --myListOfObjects is now weak

鉴于 setmetatable 返回对其修改的表的引用,您可以使用这个较短的习惯用法,它与前两行的作用相同:

myListOfObjects = setmetatable({}, {__mode = 'v' }) --creation of a weak table

关于memory-leaks - 在 Lua 中丢失引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1922399/

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