自定义内存池(C++需要掌握)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义内存池(C++需要掌握)相关的知识,希望对你有一定的参考价值。

程序通过系统的内存分配一次性申请适当大小的内存作为一个内存池,之后应用程序自己对内存的分配和释放则可以通过这个内存池来完成。只有当内存池需要动态扩张时,才需要系统再调用内存分配函数,其它时间对内存的一切掌握都在应用程序的掌握之中。

从线程安全角度,内存池可以分为单线程内存池和多线程池

单线程内存池:单线程内存池在整个生命周期只被一个线程使用,因而不需要考虑互斥问题

多线程内存池:多线程内存池可能被多个线程共享,因此则需要在每次分配和释放内存时加锁。

一般而言,单线程内存池性能更好,而多线程内存池适用范围更广。

从内存池可分配内存单元来分:固定内存池和可变内存池

固定内存池:指应用程序每次从内存池中分配出的内存单元大小事先已经确定,是固定不变的

可变内存池:每次分配的内存单元大小可以按需变化

可变内存池应用范围更广,而性能比固定内存池要低。

http://blog.csdn.net/chexlong/article/details/7071922

以上是关于自定义内存池(C++需要掌握)的主要内容,如果未能解决你的问题,请参考以下文章

QT 使用C++线程池运行Lambda自定义函数

QT 使用C++线程池运行Lambda自定义函数

鸿蒙轻内核的得力助手:带你掌握4种内存调试方法

自定义无内存泄漏的Handler内部类

C++内存管理-内存池3

一个简易内存池(C++)