【发布时间】:2015-05-28 13:36:41
【问题描述】:
我试图了解使用内存池进行内存管理,但我 找不到太多关于它的信息,即使它似乎很常见 机制。
我所知道的只是“内存池,也称为固定大小的块 分配”根据维基百科,我可以使用这些块来分配 我的对象的内存。
有没有关于内存池的标准规范?
我想知道这在堆上是如何工作的,它是如何实现的 实现了,应该如何使用?
来自this question about C++11 memory pool design patterns,我读到:
如果您还没有熟悉 Boost.Pool,请先熟悉一下。 来自 Boost 文档:
什么是池?
池分配是内存分配 该方案非常快,但在使用方面受到限制。更多 池分配信息(也称为simple 隔离存储,参见concepts 概念和Simple Segregated Storage。
我能理解他的意思,但这并不能帮助我理解如何 使用它们以及内存池如何帮助我的应用程序,如何实际 充分利用它们。
如果有一个简单的例子来说明如何使用内存池,我们将不胜感激。
【问题讨论】:
-
也许这有帮助:Memory Management
-
感谢 boost::pool,@NathanOliver 我已经阅读了这个问题,但它没有显示内存池的基本概念,无论如何,谢谢
-
基本前提是将分配的内存缓存或不返回给操作系统,如果你经常请求相同大小的内存,那么预先分配然后在使用时回收会更有效。客户端请求并返回内存,你可以认为这个一般原则适用于线程、句柄、套接字等基本上任何分配相对昂贵的资源
标签: c++ memory-management memory-pool