nginx資料結構 ngx array t

2021-07-23 07:48:25 字數 1009 閱讀 9685

typedef struct ngx_array_s       ngx_array_t;

struct ngx_array_s ;

/*建立乙個新的陣列物件,並返回這個物件。

p:陣列分配記憶體使用的記憶體池。

n:陣列的初始容量大小,即在不擴容的情況下最多可以容納的元素個數。

size:單個元素的大小,單位是位元組。*/

ngx_array_t *ngx_array_create(ngx_pool_t *p, ngx_uint_t n, size_t size);

/*銷毀該陣列物件,並釋放其分配的記憶體回記憶體池。*/

void ngx_array_destroy(ngx_array_t *a);

/*在陣列a上新追加乙個元素,並返回指向新元素的指標。

需要把返回的指標使用型別轉換,轉換為具體的型別,

然後再給新元素本身或者是各欄位(如果陣列的元素是複雜型別)賦值。*/

void *ngx_array_push(ngx_array_t *a);

/*在陣列a上追加n個元素,並返回指向這些追加元素的首個元素的位置的指標。*/

void *ngx_array_push_n(ngx_array_t *a, ngx_uint_t n);

/*如果乙個陣列物件是被分配在堆上的,那麼當呼叫ngx_array_destroy銷毀以後,如果想再次使用,就可以呼叫此函式。

如果乙個陣列物件是被分配在棧上的,那麼就需要呼叫此函式,進行初始化的工作以後,才可以使用。*/

static ngx_inline ngx_int_t ngx_array_init(ngx_array_t *array, ngx_pool_t *pool, ngx_uint_t n, size_t size);

/*注意事項: 由於使用ngx_palloc分配記憶體,陣列在擴容時,舊的記憶體不會被釋放,會造成記憶體的浪費。

因此,最好能提前規劃好陣列的容量,在建立或者初始化的時候一次搞定,避免多次擴容,造成記憶體浪費。*/

nginx資料結構(ngx str t)

typedef struct ngx str t 通過乙個以 0 結尾的普通字串str構造乙個nginx的字串,鑑於其中採用sizeof操作符計算字串長度,因此引數必須是乙個常量字串。define ngx string str 使用ngx null string初始化字串為空字串 define ng...

nginx中ngx list的資料結構

今天沒事了,在檢視nginx源 中看到ngx list的結構,發現設計為鍊錶陣列的形式,不知道為什麼這樣設計 struct ngx list part s typedef struct ngx list t 只實現三個方法 ngx list t ngx list create ngx pool t ...

Nginx資料結構及相關介面函式

本文 1.字串ngx str t typedef struct ngx str t 1.1介面函式 ngx string str 初始化乙個字串為str,str必須為常量字串,一般只用於宣告字串變數時順便初始化變數的值。ngx null string 宣告變數時,初始化字串為空字串,符串的長度為0,...