heap_4 內(nèi)存分配方法
heap_4 提供了一個最優(yōu)的匹配算法,不像 heap_2,heap_4 會將內(nèi)存碎片合并成一個大的可用內(nèi)存塊,它提供了內(nèi)存塊合并算法。內(nèi)存堆為 ucHeap[],大小同樣為 configTOTAL_HEAP_SIZE。可以通過函數(shù) xPortGetFreeHeapSize()來獲取剩余的內(nèi)存大小。
heap_4 特性如下:
1、可以用在那些需要重復(fù)創(chuàng)建和刪除任務(wù)、隊列、信號量和互斥信號量等的應(yīng)用中。
2、不會像 heap_2 那樣產(chǎn)生嚴重的內(nèi)存碎片,即使分配的內(nèi)存大小是隨機的。
3、具有不確定性,但是遠比 C 標(biāo)準(zhǔn)庫中的 malloc()和 free()效率高。
heap_4 非常適合于那些需要直接調(diào)用函數(shù) pvPortMalloc()和 vPortFree()來申請和釋放內(nèi)存 的應(yīng)用。
heap_4 也使用鏈表結(jié)構(gòu)來管理空閑內(nèi)存塊,鏈表結(jié)構(gòu)體與 heap_2 一樣。heap_4 也定義了兩個局部靜態(tài)變量 xStart 和 pxEnd 來表示鏈表頭和尾,其中 pxEnd 是指向 BlockLink_t 的指針。
-
嵌入式
+關(guān)注
關(guān)注
5105文章
19288瀏覽量
310201 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3081瀏覽量
74605 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
484瀏覽量
62817
發(fā)布評論請先 登錄
相關(guān)推薦
C語言知識總結(jié):動態(tài)內(nèi)存分配
基于FreeRTOS的STM32F103系統(tǒng)—Heap_4內(nèi)存管理機制介紹

基于FreeRTOS內(nèi)存管理Heap_4.c的實現(xiàn)方法
基于嵌入式裸機或RTOS系統(tǒng)下內(nèi)存管理方法的探究
FreeRTOS代碼剖析之4:內(nèi)存管理Heap
FreeRTOS代碼剖析之2:內(nèi)存管理Heap

淺談內(nèi)存分配方式 避免內(nèi)存浪費問題
什么是堆內(nèi)存?堆內(nèi)存是如何分配的?
STM32內(nèi)存結(jié)構(gòu)介紹,F(xiàn)reeRTOS內(nèi)存分配技巧,Stack_Size和Heap_Size大小設(shè)置

heap_1內(nèi)存分配方法
heap_2內(nèi)存的特性與分配方法
FreeRTOS heap_3內(nèi)存分配方法

評論