Ubuntu 下 nginx-1.24.0 源码分析 - ngx_cycle_modules-CSDN博客
定义在 src/core/ngx_module.c
ngx_int_t
ngx_cycle_modules(ngx_cycle_t *cycle)
{
/*
* create a list of modules to be used for this cycle,
* copy static modules to it
*/
cycle->modules = ngx_pcalloc(cycle->pool, (ngx_max_module + 1)
* sizeof(ngx_module_t *));
if (cycle->modules == NULL) {
return NGX_ERROR;
}
ngx_memcpy(cycle->modules, ngx_modules,
ngx_modules_n * sizeof(ngx_module_t *));
cycle->modules_n = ngx_modules_n;
return NGX_OK;
}
cycle->modules = ngx_pcalloc(cycle->pool, (ngx_max_module + 1)
* sizeof(ngx_module_t *));
if (cycle->modules == NULL) {
return NGX_ERROR;
}
在 cycle 的内存池中分配内存,存储模块指针数组
ngx_max_module + 1:ngx_max_module 是最大模块数,+1 用于预留终止标记( NULL)
ngx_memcpy(cycle->modules, ngx_modules,
ngx_modules_n * sizeof(ngx_module_t *));
将全局模块数组 ngx_modules 拷贝到 cycle->modules
cycle->modules_n = ngx_modules_n;
将全局模块数量
ngx_modules_n赋值给cycle->modules_n
return NGX_OK;
返回 NGX_OK,代表 成功

















![P8627 [蓝桥杯 2015 省 A] 饮料换购](https://i-blog.csdnimg.cn/direct/fe760a4d787d4daca987288d03d2195b.png)

