gpt4 book ai didi

memory-leaks - 只有间接泄漏,没有直接泄漏

转载 作者:行者123 更新时间:2023-12-01 01:40:56 25 4
gpt4 key购买 nike

阅读完这个 StackOverflow 问题后:What is the difference between a direct and indirect leak?我留下的印象是,如果我修复所有直接泄漏(多次修复测试通过,因为在修复之前的直接泄漏后间接泄漏可能会变成直接泄漏),最终我会得到 0 次泄漏。

我目前正在使用 Leak Sanitizer (LSAN),在修复了所有直接泄漏(因此一些间接泄漏消失了)之后,我现在留下了一堆间接泄漏。为什么没有直接的?这什么时候会发生?如何诊断和修复剩余的泄漏?

最佳答案

它们可能是循环引用。由于间接泄漏可以从其他泄漏块到达,具有循环依赖,例如2 个对象相互引用,并且它们都可能无法从根访问。

例如。在 Observer模式,如果忘记在使用结束时取消注册( Lapsed listener problem ),很容易保持循环引用。

一般来说,最好避免循环引用。如果从所有权的角度考虑,所有者必须引用其拥有的对象,但反之亦然,在这种情况下,循环依赖是不可能的。如果 pass dependencies via constructor 是可以实现的,并且不允许通过 setter 分配依赖项。也例如Rust借用引用使得循环依赖变得不可能。

关于memory-leaks - 只有间接泄漏,没有直接泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57477703/

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