nginx的动态数组--ngx_array_t
来源:互联网 发布:用stata怎么导面板数据 编辑:程序博客网 时间:2024/05/17 14:17
// struct ngx_array_t
// nginx 数组结构 {{{
typedef struct {
void *elts; // 数组起始位置
ngx_uint_t nelts; // 数组元素个数
size_t size; // 单个元素大小
ngx_uint_t nalloc; // 空间能够容纳元素个数
ngx_pool_t *pool; // 内存池
} ngx_array_t; // }}}
结构说明
elts 真正的连续存储内存的首地址nelts 当前已经存在数组中的元素个数
size 每个元素的大小
nalloc 当前数组空间所能容纳的元素个数
pool 指向数组分配所在内存池
动态数组操作函数
nginx动态数组主要提供了以下操作函数
ngx_array_init 数组结构初始化(ngx_arry_create 中调用)
ngx_array_create 动态数组创建
ngx_array_destory 动态数组销毁
ngx_arry_push 在动态数组尾部插入一个元素
ngx_array_push_n 在动态数组尾部插入n个元素
动态数组创建
在这个函数中,首先在内存池中为ngx_array_t结构分配了空间,然后调用了ngx_array_init函数初始化ngx_array_t结构的各个域,并未实际的存储区域分配空间
动态数组的销毁
如果该连续存储区域或ngx_array_t是内存池已有空间的尾部,则将他们释放掉,以便可以节约这部分空间的使用,否则不做任何处理
在动态数组尾部插入一个元素
如果空间足够,则插入该元素,并更新ngx_array_t各个域的值
否则开辟新的连续内存,并将数组中所有数据全部拷贝到新的内存,并添加元素,这样做消耗了一定的效率,但是保证了数组空间的连续性,也就保证了今后随机访问的高效性
在动态数组尾部插入n个元素
与ngx_array_push的操作非常类似,只是他一次性插入n个元素,提高了效率
0 0
- nginx的动态数组--ngx_array_t
- nginx动态数组ngx_array_t
- Nginx 数组结构 ngx_array_t
- nginx数组ngx_array_t
- 文章2:Nginx源码分析-ngx_array_t动态数组
- nginx学习七 高级数据结构之动态数组ngx_array_t
- Nginx高级数据结构总结之ngx_array_t 动态数组
- nginx数组结构ngx_array_t剖析
- nginx中的数组结构ngx_array_t
- 菜鸟nginx源码剖析数据结构篇(一)动态数组ngx_array_t
- 菜鸟nginx源码剖析数据结构篇(一) 动态数组ngx_array_t
- 菜鸟nginx源码剖析数据结构篇(一)动态数组ngx_array_t
- nginx源码分析—数组结构ngx_array_t
- Nginx源码分析---数组结构ngx_array_t
- nginx源码分析—数组结构ngx_array_t
- nginx源码分析—数组结构ngx_array_t
- nginx源码分析—数组结构ngx_array_t
- nginx源码分析—数组结构ngx_array_t
- 关于Adodb.Stream 的使用说明
- 笑话来了
- Hadoop安装常见问题
- 莫比乌斯反演1002 BZOJ 2005
- android--多进程和多线程
- nginx的动态数组--ngx_array_t
- 【LeetCode】 028. Implement strStr()
- PHP中实现二分法查找的两种方法
- 在字符串copy函数中引入辅助指针变量
- SICP_Python版:抽象数据的多重表示
- linphone-LinphoneCallParams.java文件分析
- NOIP2016 暑期培训 D1
- Microsoft.XMLHTTP基本用法
- 莫比乌斯反演1003 SPOJ VLATTICE