ngx_pstrdup
声明在 src/core/ngx_string.h
u_char *ngx_pstrdup(ngx_pool_t *pool, ngx_str_t *src);
实现在 src\core\ngx_string.c
u_char *
ngx_pstrdup(ngx_pool_t *pool, ngx_str_t *src)
{u_char *dst;dst = ngx_pnalloc(pool, src->len);if (dst == NULL) {return NULL;}ngx_memcpy(dst, src->data, src->len);return dst;
}
ngx_pstrdup
是 Nginx 中用于基于内存池复制字符串的函数
函数作用
-
内存池分配
通过ngx_pnalloc(pool, src->len)
从 Nginx 内存池pool
中分配与源字符串等长的内存空间,避免直接使用系统堆内存(malloc
),提升内存管理效率,减少碎片。 -
二进制安全复制
使用ngx_memcpy
按指定长度src->len
复制数据,不依赖字符串结束符\0
,适用于处理二进制数据或包含\0
的字符串(如 HTTP 请求体)。 -
返回裸指针
返回指向新分配内存的u_char*
指针,不附加额外结构,直接兼容 Nginx 内部字符串操作。