nginx 数据结构之 array

        array是一个动态的数组,可以往里面动态的添加元素,结构如下:

 

struct ngx_array_s { void *elts; //实际数据区 ngx_uint_t nelts; //实际元素的个数 size_t size; //每个元素的大小 ngx_uint_t nalloc; //总的分配的元素的个数 ngx_pool_t *pool; //内存池 };

 

 

 

图如下

 

 

nginx 数据结构之 array_第1张图片

 

 

 

主要的函数:

 

 

ngx_array_init

作用: 对数据成员进行初始化,并根据size和nalloc大小来分配内存空间

 

 

ngx_array_init

作用: 创建数组,对数据成员进行初始化,并根据size和nalloc大小来分配内存空间

 

 

ngx_array_destroy

作用:释放内存空间,首先释放数据空间内存,再释放数据结构空间内存

 

ngx_array_push

作用:在数组的最后面添加一个元素,同时把最后元素的地址返回

过程: 1 如果空间不足 nelts == nalloc ,那么就就需要分配新的内存: 如果内存池还有空间,那么就直接利用内存池中的空间,否者就直接把数组空间扩大两倍,重新分配。

      2 把 nelts++ , 同时返回最后元素地址

 ngx_array_push_n

作用:在数组的最后面添加N个元素,同时把最后N个元素的起始地址返回

过程: 1 如果空间不足 nelts + n > nalloc ,那么就就需要分配新的内存: 如果内存池还有空间,那么就直接利用内存池中的空间,否者就直接把数组空间扩大两倍(nalloc和n两者中大的),重新分配。

      2 把 nelts += n , 同时返回最后N个元素的起始地址返回

 

你可能感兴趣的:(数据结构,nginx,struct)