NGX 内存池实现

本文详细介绍了NGX内存池的创建过程,包括ngx_create_pool函数的使用,以及内存的分配策略。当分配的内存小于内存池的最大可分配内存时,会从当前内存池的空闲空间中分配;否则,会尝试创建新的内存池块来满足大内存需求。通过内存池,实现了内存的高效管理和复用。
摘要由CSDN通过智能技术生成

// 创建内存池
/**********************************************************************
函数名称: ngx_create_pool
函数描述: 创建内存池,从堆中分配一块内存当作内存池
输入参数:
                        size_t size:内存池SIZE
                        ngx_log_t *log:日志指针
输出参数: 无
返回值:
                        NULL:表示函数执行失败
                        非NULL :表示函数执行成功
其           他: 创建内存池后,将内存池的信息放到整个
分配内存的顶部,创建内存池后,实际可以内存是
分配的内存地址偏移内存池结构长度的后面部分
**********************************************************************/
ngx_pool_t *
ngx_create_pool(size_t size, ngx_log_t *log)
{
    ngx_pool_t  *p;


    // 分配内存 16 字节对齐申请
    p = ngx_memalign(NGX_POOL_ALIGNMENT, size, log);
    if (p == NULL) {
        return NULL;
    }


    // last 指向申请内存地址加上内存池头长度
    p->d.last = (u_char *) p + sizeof(ngx_pool_
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值