点击链接查看原文
内存池:
自定义内存池的思想通过这个"池"字表露无疑,应用程序可以通过系统的内存分配调用预先一次性申请适当大小的内存作为一个内存池,之后应用程序自己对内存的分配和释放则可以通过这个内存池来完成。这样效率更高,不用每次new再次的申请内存了。
只有当内存池大小需要动态扩展时,才需要再调用系统的内存分配函数,其他时间对内存的一切操作都在应用程序的掌控之中。
============================================================
应用程序自定义的内存池根据不同的适用场景又有不同的类型。
从线程安全的角度来分:
分为单线程内存池和多线程内存池。
单线程内存池整个生命周期只被一个线程使用,因而不需要考虑互斥访问的问题;
多线程内存池有可能被多个线程共享,因此则需要在每次分配和释放内存时加锁。
相对而言,单线程内存池性能更高,而多线程内存池适用范围更广。
从内存池可分配内存单元大小来分:
分为固定内存池和可变内存池。
所谓固定内存池是指应用程序每次从内存池中分配出来的内存单元大小事先已经确定,是固定不变的;
而可变内存池则每次分配的内存单元大小可以按需变化,应用范围更广,而性能比固定内存池要低。