gpt4 book ai didi

memory-management - 使用 valgrind 调试自定义内存分配器时, "pool"的作用是什么?

转载 作者:行者123 更新时间:2023-12-02 03:36:11 27 4
gpt4 key购买 nike

Valgrind documentation on debugging custom memory allocators基于称为“池”的抽象。我在弄清楚如何使用游泳池时遇到了一些麻烦。我最初的猜测是因为我有一个相当简单的内存分配器(标记清除垃圾收集器),所以我可以只使用一个“池”。也许如果我有多个实体以不同的方式管理不同的内存,我会使用多个“池”吗?

关于您认为池的用途或您如何在您的应用程序中使用池的任何指导,我希望得到任何指导。

最佳答案

我来晚了。我了解到 pool 只是我们正在分配的 valgrind block 的引用/ anchor 地址。在我的例子中,池是非常动态的(拆分堆),每当分配内存堆 block 时,我将其标记为无访问权限(如文档所建议的),并且每当分配新对象(valgrind block )时,我调用VALGRIND_MEMPOOL_ALLOC 与池地址。这使 valgrind 能够一次处理多个池。我们也可以直接销毁池,valgrind 会自动释放其中的对象,然后当我们创建一个新池时,valgrind 知道新对象不会与之前的对象重叠,从而防止错误错误。

这是我的代码:https://github.com/eclipse/omr/pull/1311 .还有一个文档链接,其中包含我如何理解和使用该 API。

关于memory-management - 使用 valgrind 调试自定义内存分配器时, "pool"的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23312350/

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