1、内存池是什么?
内存池是一组资源的集合。程序在申请堆上的内存时,我们可以给它一大块内存(远超出程序要申请的大小,即内存池),并且自己管理,而不是它要多少就从切换到内核态,给它多少。
应用程序可以通过调用系统的内存分配函数预先一次性申请适当大小的内存作为一个内存池,并为这个内存池类或结构体定义一些分配和释放内存块的成员函数。
之后应用程序自己对内存的分配和释放则可以通过这个内存池类及其成员函数来完成。只有当内存池大小需要动态扩展时,才需要再调用系统的内存分配函数,其他时间对内存的一切操作都在应用程序的掌控之中。
2、为什么要设计内存池?
看下面代码:
#include <iostream>
using namespace std;
void* operator new(size_t size) //size 代表总字节个数
{
void* ptr = malloc(size);
cout << "operator new: " << ptr << endl;
return ptr;
}
void operator delete(void* ptr)
{
cout << "operator delete: " << ptr << endl;
free(ptr);
}
&

内存池是一种内存管理技术,通过预先分配一大块内存并自行管理,提高内存分配和释放效率,减少系统调用和内存碎片。本文介绍了内存池的概念、设计原因、优点以及如何使用静态链表实现内存池,强调了内存池在管理内存结点和避免用户态到内核态切换上的优势。
最低0.47元/天 解锁文章
1308

被折叠的 条评论
为什么被折叠?



