<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                LwIP中,內存的選擇是通過以下這幾個宏值來決定的,根據用戶對宏值的定義值來判斷使用那種內存管理策略,具體如下: * MEM_LIBC_MALLOC:該宏定義是否使用C 標準庫自帶的內存分配策略。該值默認情況下為0,表示不使用C 標準庫自帶的內存分配策略。即默認使用LwIP提供的內存堆分配策略。如果要使用C標準庫自帶的分配策略,則需要把該值定義為 1。 當該宏定義為0表示使用LwIP自己實現的動態內存管理策略。LwIP的動態內存管理策略又分為兩種實現形式:一種通過內存堆(HEAP)管理策略來實現內存管理(大數組),另一種是通過內存池(POOL)管理策略來實現內存管理(事先開辟好的內存池)。 * MEMP_MEM_MALLOC:該宏定義表示是否使用LwIP內存堆分配策略實現內存池分配(即:要從內存池中獲取內存時,實際是從內存堆中分配)。默認情況下為 0,表示不從內存堆中分配,內存池為獨立一塊內存實現。與MEM_USE_POOLS只能選擇其一。 * MEM_USE_POOLS:該宏定義表示是否使用LwIP內存池分配策略實現內存堆的分配(即:要從內存堆中獲取內存時,實際是從內存池中分配)。默認情況下為 0,表示不使用從內存池中分配,內存堆為獨立一塊內存實現。與MEMP_MEM_MALLOC只能選擇其一。 要使用內存池的方式實現內存堆分配,則需要將MEM_USE_POOLS與MEMP_USE_CUSTOM_POOLS定義為 1,并且宏定義MEMP_MEM_MALLOC必須為 0,除此之外還需要做一下處理: 創建一個lwippools.h文件,在該文件中添加類似代碼清單 5-15初始化內存池相關的代碼,內存池的大小及數量是由用戶自己決定的。 ``` 1 LWIP_MALLOC_MEMPOOL_START 2 3 LWIP_MALLOC_MEMPOOL(20, 256) 4 5 LWIP_MALLOC_MEMPOOL(10, 512) 6 7 LWIP_MALLOC_MEMPOOL(5, 1512) 8 9 LWIP_MALLOC_MEMPOOL_END ``` 此處需要注意一點的是,內存池的大小要依次增大,在編譯階段,編譯器就會將這些內存個數及大小添加到系統的內存池之中,用戶在申請內存的時候,根據其需要的大小在這些內存池中選擇最合適的大小的內存塊進行分配,如果具有最匹配的內存池中的內存塊已經用完,則選擇更大的內存池進行分配,只不過這樣子會浪費更多的內存,當然,內存池的分配效率也是最高的,也相對于是我們常說的以空間換時間。 >關于如何選擇這些宏定義及其分配策略,具體見表格 5?1。 |MEMP_MEM_MALLOC|MEM_USE_POOLS|內存分配策略| |---|---|---| |0|0|LwIP中默認的宏定義,內存池與內存堆獨立實現,互不相干。| |0|1|內存堆的實現由內存池實現。| |1|0|內存池的實現由內存堆實現。| |1|1|不允許的方式。| 總結來說,無論宏值怎么配置,LwIP都有兩種內存管理策略:內存堆和內存池。
                  <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>

                              哎呀哎呀视频在线观看