C 中的自定义内存分配器/管理器?哪种方法?

标签 c memory memory-management

我正在寻找一些用 c 编写的(自定义)内存管理器/分配器,并浏览了一些文章,-

一些链接:

我必须使用任何可用的服务器对小型 Web 服务器进行沙箱处理,并且我在编写线程处理/分配方案的包装器时没有问题。 Apache WS 使用内存池来处理内存,并且池不是持久的,它是基于每个请求的。你们能推荐点什么吗?一些好的/最好的方法来解决这个问题?我的要求如下;-

  1. (有界响应时间)分配和解除分配必须提前知道,即一些 恒定成本 O(c),其中 c 是 常数。

  2. 来自异构的碎片 分配/取消分配大小或 应该处理序列,我可以编写模式/包装器来提供 一样的。

非常感谢您的帮助和想法!

最佳答案

Fragmentation from heterogeneous allocation/de-allocation sizes or sequences should be handled, I can write the schema / wrapper to provide the same.

为避免碎片化,您必须使用混合 block 分配策略。这里的混合意味着不同大小的元素 block ,而不是具有单一大小的元素 block ,即分配器(或围绕它的包装器)应该维护不同大小的元素 block (小,中,大等)。所有分配请求都应四舍五入到最近的 block 边界。此策略应确保您不会遭受外部碎片,但会导致内部碎片。您可以在以下链接中找到更多信息:

http://www.cotsjournalonline.com/magazine/articles/view/101217/pg:2 http://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf

关于C 中的自定义内存分配器/管理器?哪种方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3920453/

相关文章:

java - 内存消耗 java.util.Date vs java.time.LocalDate vs org.joda.time.DateTime

c++ - 哪个指针赋值更好(C++)

c++ - 如何让写时复制在 Linux 上的共享内存上工作

c - 如何在不使用 C 语言中的整数类型的情况下将 2 uint8 模乘一个大数

c - 在 C 中运行时存储字符串

在将程序构建到 ubuntu 之前更改程序的名称

linux - 跟踪线程内存和 CPU 消耗

c - 系统调用在 cgi 中不起作用

Android OpenGL 内存使用分析?

c++ - 在 C++ 中删除匿名对象