阅读nginx源码,学习优秀的开源项目,优秀的设计思想,并简单移植的nginx内存池源码。
如需详细了解nginx,请移步https://nginx.org/en/。
nginx源码使用C语言,移植的内存池使用C++封装了一个类。
文件描述
ngx_memPool.h 内存池类对象的描述
ngx_memPool.cpp 类成员方法的测试
test_ngxmemPool.h 对移植的内存池进行测试使用。
类成员方法的说明 ;
void* ngx_create_pool(size_t size); //创建内存池,内存块大小最大为4K大小。
void* ngx_palloc(size_t size); //分配内存,字节对齐 void* ngx_pnalloc(size_t size); //分配内存,无字节对齐 void* ngx_pcalloc(size_t size); //分配内存,实际上调用的是ngx_palloc,初始化为0 void ngx_free(void* p); //释放大块内存 void ngx_reset_pool(); //重置内存池 void ngx_destroy_pool(); //销毁内存池 ngx_pool_cleanup_s* ngx_pool_cleanup_add(size_t size); //添加回调清理函数
void* ngx_palloc_small(size_t size, ngx_uint_t align); //分配小块内存函数 void* ngx_palloc_large(size_t size); // 分配大块内存函数 void* ngx_palloc_block(size_t size); //再次分配小块内存函数带调用
下面是内存池的一些具体函数说明
