内存池,简单的讲就是,内存不由系统管理,而由应用程序自己或另行委托第三者管理的内存空间。通俗点说就是,所谓内存池就是应用程序从系统那里批发来的内存空间。对于使用量较大且需要频繁申请和释放内存的应用程序来说,使用内存池会减少运行时间,而对于系统来讲,批发内存可以有效减少零售所带来的内存碎片问题,从而提高内存空间的利用率。
(1) 在c++程序设计中,一般在没有什么特殊要求时,人民都是使用new 与 delete 来分配和释放动态内存,这几乎时直接在与操作系统的内存管理系统进行交互。当应用程序需要的动态内存很小的时候,这不是什么问题,但如果应用程序需要的动态内存不仅量很大,而且对动态内存的申请和释放又极其频繁,那么问题就很大。
操作系统对系统内存的管理是一件极其繁琐的事,用户对动态内存的每一次请求都要经过一道繁琐的手续才能获得成功,就是销毁内存也是一件不太容易的事,因为每次系统的内存管理系统都要对内存的使用情况进行整理和记录。简单的说就是,每次系统的内存管理系统来使用内存,既费时又费力。那么解决这个这个问题的方法就是“批发”,即一次申请一大块内存,把这大块内存作为应用程序的内存储备,每当需要一小块内存的时候就到这个储备的内存中来取用,不用了就归还给这个内存,程序就快捷多了。总有一些意外会使初始申请的这块内存储备也不够,那么就再申请一块内存,然后把它与原有的内存块用链表连接起来组成更大的内存储备。这种由应用程序储备的内存就叫做内存池。
使用内存池另一个好处就是能够有效的防治内存碎片华,因为他总是大块大块的申请内存,因此对于系统内存管理系统来讲,这是个省时省力的好事。