Ben*_*igt 14
大多数C和C++编译器已经提供了堆内存管理器作为标准库的一部分,因此您根本不需要做任何事情以避免每次请求都触及操作系统.
如果你想提高性能,你可以简单地链接和使用一些改进的分配器.例如,Hoard,在现在删除的答案中提到的小麦(实际上非常好 - 小麦,你为什么要删除它?).
如果您想编写自己的堆管理器作为学习练习,以下是它需要执行的基本操作:
您可以在程序开头分配一大块内存,以满足其需求.然后你必须覆盖new和/或malloc,delete和/或free来从这个缓冲区返回内存.
在实现这种解决方案时,您需要编写自己的分配器(从块中获取源代码),并且最终可能会使用多个分配器,这通常是您首先分配内存池的原因.
默认内存分配器是一个很好的全分配器,但不是所有分配需求的最佳.例如,如果您知道要为特定大小分配大量对象,则可以定义一个分配器,该分配器分配固定大小的缓冲区并预先分配多个以获得一定的效率.