ngx_array_t动态数组
优点
- 访问速度快
- 允许元素个数不确定
- 负责元素占用内存的分配,这些内存将由内存池统一管理
结构
typedef struct ngx_array_s ngx_array_t;
struct ngx_array_s {
void *elts;
ngx_uint_t nelts;
size_t size;
ngx_uint_t nalloc;
ngx_pool_t *pool;
};
提供的函数
方法名 | 参数含义 | 执行意义 |
---|
ngx_array_create(ngx_pool_t *p,ngx_uint_t n,size_t size) | p是内存池,n是初试分配元素的最大个数,size是每个元素所占内存的大小 | 创建一个动态数组,分配n*size的内存空间 |
ngx_array_init(ngx_array_t *a,ngx_pool_t *p,ngx_uint_t n,szie_t size) | a是一个动态数组的指针,其余同上 | 初始化一个已经存在的动态数组,分配n*size的内存空间 |
ngx_array_destroy(ngx_array_t *a) | 同上 | 销毁、回收a这个动态数组 |
ngx_array_push(ngx_array_t *a) | 同上 | 后插一个元素(这个元素是自动生成的,我们只需要在返回的地址上对其进行操作即可),返回这个新元素的地址,如果到达容量上限,会自动扩容 |
ngx_array_push_n(ngx_array_t *a,ngx_uint_t n) | 同上,n是需要添加元素的个数 | 向a中添加n元素,返回的是这批元素的第一个元素地址 |