<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ngx_array_t是nginx內部使用的數組結構。nginx的數組結構在存儲上與大家認知的C語言內置的數組有相似性,比如實際上存儲數據的區域也是一大塊連續的內存。但是數組除了存儲數據的內存以外還包含一些元信息來描述相關的一些信息。下面我們從數組的定義上來詳細的了解一下。ngx_array_t的定義位于src/core/ngx_array.c|h里面。 [](http:// "點擊提交Issue,反饋你的意見...") 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; }; | elts: | 指向實際的數據存儲區域。 | |-----|-----| | nelts: | 數組實際元素個數。 | | size: | 數組單個元素的大小,單位是字節。 | | nalloc: | 數組的容量。表示該數組在不引發擴容的前提下,可以最多存儲的元素的個數。當nelts增長到達nalloc 時,如果再往此數組中存儲元素,則會引發數組的擴容。數組的容量將會擴展到原有容量的2倍大小。實際上是分配新的一塊內存,新的一塊內存的大小是原有內存大小的2倍。原有的數據會被拷貝到新的一塊內存中。 | | pool: | 該數組用來分配內存的內存池。 | 下面介紹ngx_array_t相關操作函數。 [](http:// "點擊提交Issue,反饋你的意見...") ngx_array_t *ngx_array_create(ngx_pool_t *p, ngx_uint_t n, size_t size); 創建一個新的數組對象,并返回這個對象。 | p: | 數組分配內存使用的內存池; | |-----|-----| | n: | 數組的初始容量大小,即在不擴容的情況下最多可以容納的元素個數。 | | size: | 單個元素的大小,單位是字節。 | [](http:// "點擊提交Issue,反饋你的意見...") void ngx_array_destroy(ngx_array_t *a); 銷毀該數組對象,并釋放其分配的內存回內存池。 [](http:// "點擊提交Issue,反饋你的意見...") void *ngx_array_push(ngx_array_t *a); 在數組a上新追加一個元素,并返回指向新元素的指針。需要把返回的指針使用類型轉換,轉換為具體的類型,然后再給新元素本身或者是各字段(如果數組的元素是復雜類型)賦值。 [](http:// "點擊提交Issue,反饋你的意見...") void *ngx_array_push_n(ngx_array_t *a, ngx_uint_t n); 在數組a上追加n個元素,并返回指向這些追加元素的首個元素的位置的指針。 [](http:// "點擊提交Issue,反饋你的意見...") 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_array_destroy銷毀以后,如果想再次使用,就可以調用此函數。 如果一個數組對象是被分配在棧上的,那么就需要調用此函數,進行初始化的工作以后,才可以使用。 **注意事項:**?由于使用ngx_palloc分配內存,數組在擴容時,舊的內存不會被釋放,會造成內存的浪費。因此,最好能提前規劃好數組的容量,在創建或者初始化的時候一次搞定,避免多次擴容,造成內存浪費。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看