对抗自定义内存管理器中的碎片

发布于 2024-07-14 06:08:02 字数 242 浏览 6 评论 0原文

我已经为堆分配编写了 ac/c++ 内存管理器(重载了 new/delete 和 malloc/realloc/free,基于 Doug Lea 的 malloc,但设计为免费等待),并且似乎在碎片方面遇到了一些麻烦。 是否有任何好的资源详细说明了通过管理器避免碎片化的良好策略?

请注意,我无法重新排列已分配的内存(不使用带有 GUID 的智能指针),并且重写系统以使用池而不是堆分配是不可行的。

谢谢,
授予

I've written a c/c++ memory manager for heap allocations (overloaded new/delete and malloc/realloc/free, based on Doug Lea's malloc but designed to be wait free) and seem to be having some trouble with fragmentation. Are there any good resources out there that detail good strategies for avoiding fragmentation via the manager?

Please note that I can't rearrange memory that has already been allocated (not using smart pointers with GUIDs) and re-writing the system to use pools instead of heap allocations is unfeasible.

Thanks,
Grant

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

羅雙樹 2024-07-21 06:08:03

您可能想从 jemalloc 获得一些灵感 (http://people.freebsd .org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf) - 由于其抗碎片功能,该分配器在新的 Firefox 中被明确使用。

You may want to get some inspiration from jemalloc (http://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf) - this allocator is used in the new Firefox explicitly because of its anti-fragmentation capabilities.

眼睛会笑 2024-07-21 06:08:03

看看像 glibc 这样更成熟的项目是怎么做的。

谷歌很快就找到了这个,其中有一堆参考。

Have a look at how more mature projects like glibc do it.

A quick Google finds this, with a stack of references.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文