0

当内存的总大小未知时,如何实现伙伴分配器?即,如果我使用brk/实现 malloc 函数sbrk,我不知道我的进程可用内存的总大小,可以吗?因为虚拟内存,我的内存空间的总大小甚至都不知道,是吗?

你怎么能使用伙伴分配器来处理这样的事情?您是否只是假设一个合理的大小来构建一个伙伴分配器树,并在需要时以某种方式增长它?

4

1 回答 1

1

最简单的方法是首先用更少量的内存初始化你的伙伴分配器。当内存不足以进行下一次分配时,将先前分配的内存大小加倍,您将获得一个新的更大的伙伴分配器。


我想知道为什么您必须使用伙伴系统进行内存分配器?mmap大多数现代分配器为小分配维护平板结构,并通过调用处理大分配。这种方案比伙伴系统更快,内存效率更高。

于 2013-09-17T05:07:20.803 回答