首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有间接泄漏,没有直接泄漏

只有间接泄漏,没有直接泄漏
EN

Stack Overflow用户
提问于 2019-08-13 12:25:08
回答 1查看 1K关注 0票数 5

在阅读了这个StackOverflow问题:直接泄漏和间接泄漏有什么区别?之后,给我留下的印象是,如果我修复了所有的直接泄漏(多个修复测试通过,因为一个间接泄漏可能在修复之前的直接泄漏之后变成直接泄漏),我最终会得到0。

我目前正在使用泄漏杀菌剂(LSAN),在修复了所有的直接泄漏(以及一些间接泄漏的结果)之后,我现在只剩下一堆间接泄漏了。为什么没有直接的?什么时候会发生这种事?如何诊断和修复剩余的漏洞?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-16 13:53:50

它们可能是循环引用。由于间接泄漏可以从其他泄漏的块中访问,因此循环依赖关系(例如,两个对象之间有相互引用),这两个对象都可能无法从根中访问。

例如,在观察者模式中,如果忘记在使用结束时取消注册(失效听者问题),则很容易保持循环引用。

一般来说,最好避免循环引用。如果从所有权的角度来看,所有者必须有对其拥有的对象的引用,反之亦然,在这种情况下,循环依赖是不可能的。如果是通过构造函数传递依赖项,它是可以实现的,并且不允许通过setter分配依赖项。另外,借用引用的Rust使循环依赖变得不可能。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57477703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档