<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之旅 廣告
                同樣的,內存釋放函數也非常簡單的,只需要把使用完畢的內存添加到對應內存池中的空閑內存塊鏈表即可,只不過釋放內存有兩個參數,一個是POOL的類型,還有就是內存塊的起始地址,源碼具體見代碼清單 5?8 ``` 1 void 2 memp_free(memp_t type, void *mem) 3 { 4 LWIP_ERROR("memp_free: type < MEMP_MAX", 5 (type < MEMP_MAX), return;); 6 7 if (mem == NULL) 8 { 9 return; 10 } 11 do_memp_free_pool(memp_pools[type], mem); 12 } 13 14 static void 15 do_memp_free_pool(const struct memp_desc *desc, void *mem) 16 { 17 struct memp *memp; 18 SYS_ARCH_DECL_PROTECT(old_level); 19 20 LWIP_ASSERT("memp_free: mem properly aligned", 21 ((mem_ptr_t)mem % MEM_ALIGNMENT) == 0); 22 23 /* cast through void* to get rid of alignment warnings */ 24 memp = (struct memp *)(void *)((u8_t *)mem - MEMP_SIZE); (1) 25 26 SYS_ARCH_PROTECT(old_level); 27 28 memp->next = *desc->tab; (2) 29 *desc->tab = memp; (3) 30 31 SYS_ARCH_UNPROTECT(old_level); 32 33 } ``` * (1):根據內存塊的地址偏移得到內存塊的起始地址,因為前面也說了,內存塊中有一部分內容是內存分配器操作的,所以需要進行偏移。 * (2): 內存塊的下一個就是鏈表中的第一個空閑內存塊。 * (3):將內存塊插入到對應內存池的*desc->tab中。 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>

                              哎呀哎呀视频在线观看