最近一直在搞内存池,这一块之前一直没有注意过,最近看书看到这一块,发现挺重要的,琢磨了挺长时间,也在github上找了很多代码,感觉都不太好,最后是看《深入实践C++模板编程》书中的实现,感觉还不错,就自己敲了一下并分析理解了原理,感觉受益匪浅。
简介
什么是内存池?为什么要使用内存池?
简单的来说就是,如果我们要给很多元素分配内存,如果我们一个个用malloc分配,因为malloc本身调用非常慢,所以数据量大时耗费在malloc上的时间将会很多。内存池就是先分配一块比较大的内存,再对这块已经分配的内存进行管理,对元素进行分配,这样可以节约比较多的时间。
内存池和allocator的关系
allocator是分配器,STL中大量使用它,比如vector等,我们平时使用的vector<int>实际上是隐含了分配器,实际真正的调用应该是vector<int, std::allocator<int>>,也就是说真正的内存管理是通过allocator来进行的。实际上std::allocator的实现就是通过内存池,