详解(8)
初始化模块配置上下文(conf_ctx
)
c
cycle->conf_ctx = ngx_pcalloc(pool, ngx_max_module * sizeof(void *));
if (cycle->conf_ctx == NULL) {
ngx_destroy_pool(pool);
return NULL;
}
1 分配模块配置上下文数组
c
cycle->conf_ctx = ngx_pcalloc(pool, ngx_max_module * sizeof(void *));
从内存池 pool
中分配一个指针数组 conf_ctx
,每个元素对应一个模块的配置结构指针。
-
ngx_max_module
:编译时确定的模块总数 -
sizeof(void *)
:每个指针的大小 -
数组长度为
ngx_max_module
,索引为模块的唯一标识符(module->index
)。 -
初始值全为
NULL
,表示尚未创建配置结构。
2 检查内存分配结果
c
if (cycle->conf_ctx == NULL) {
ngx_destroy_pool(pool);
return NULL;
}
若内存分配失败,销毁内存池并终止初始化。