gpt4 book ai didi

c++ - 列出 "cold"内存区域

转载 作者:可可西里 更新时间:2023-11-01 18:38:01 25 4
gpt4 key购买 nike

我正试图在服务器软件中寻找一个看起来像内存泄漏的非常难以捉摸的错误,但 memcheck 根本没有帮助。我的猜测是,已经实例化且从未移除的内存确实没有泄漏,因此存在对它的引用,但现在对程序无用,应该移除。有没有一种工具可以计算内存中的访问次数而不是引用次数,从而评估堆中对象的有效使用情况?

最佳答案

我最终实现了自己的工具。我的方法与我的意图略有不同:我写了一个 malloc hooking library .它 Hook malloc、realloc 和 free,并维护一个事件的 malloc 内存块列表。每当您向应用程序发送 SIGUSR1 时,它都会将其信息转储到一个文件中,并将其评估为 Mathematica。表达。 Mathematica 笔记本最终提供了一些非常有用的图表:得分最高的实例 by call stack ,以及 calls to malloc 的完整概述.使用这些工具,我只需将鼠标悬停在第二张图最粗、距离中心绿点最远的地方,瞧,我得到了实例化未泄漏但无用内存负载的地址。

附言您在第二张图中看到的循环调用肯定是 libc 的 backtrace() 中的错误。

关于c++ - 列出 "cold"内存区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8637866/

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