Memory management 当使用valgrind调试自定义内存分配器时,";池;?

Memory management 当使用valgrind调试自定义内存分配器时,";池;?,memory-management,garbage-collection,valgrind,Memory Management,Garbage Collection,Valgrind,这是基于一个称为“池”的抽象。我在弄清楚如何使用这个池时遇到了一些困难。我最初的猜测是,因为我有一个相当简单的内存分配器(标记和清除垃圾收集器),所以我可以只使用一个“池”。也许如果我有多个实体以不同的方式管理不同的内存,我会使用多个“池” 我希望您能提供有关如何使用该池的指导,或者您在应用程序中如何使用该池的指导。我来晚了一点。我了解到pool只是我们正在分配的valgrind块的一个引用/锚定地址。在我的例子中,池是非常动态的(拆分堆),每当分配内存堆块时,我都将其标记为noaccess(如

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


我希望您能提供有关如何使用该池的指导,或者您在应用程序中如何使用该池的指导。

我来晚了一点。我了解到pool只是我们正在分配的valgrind块的一个引用/锚定地址。在我的例子中,池是非常动态的(拆分堆),每当分配内存堆块时,我都将其标记为noaccess(如文档所建议的),每当分配新对象(valgrind块),我都使用池地址调用
valgrind_MEMPOOL_ALLOC
。这使valgrind能够一次处理多个池。我们还可以直接销毁该池,valgrind将自动释放其中的对象,然后当我们创建一个新池时,valgrind知道新对象不会与以前的对象重叠,从而防止出现错误

这是我的代码:。 还有一个指向文档的链接,其中包含我如何理解和使用api