heap_4 內存分配方法
heap_4 提供了一個最優的匹配算法,不像 heap_2,heap_4 會將內存碎片合并成一個大的可用內存塊,它提供了內存塊合并算法。內存堆為 ucHeap[],大小同樣為 configTOTAL_HEAP_SIZE。可以通過函數 xPortGetFreeHeapSize()來獲取剩余的內存大小。
heap_4 特性如下:
1、可以用在那些需要重復創建和刪除任務、隊列、信號量和互斥信號量等的應用中。
2、不會像 heap_2 那樣產生嚴重的內存碎片,即使分配的內存大小是隨機的。
3、具有不確定性,但是遠比 C 標準庫中的 malloc()和 free()效率高。
heap_4 非常適合于那些需要直接調用函數 pvPortMalloc()和 vPortFree()來申請和釋放內存 的應用。
heap_4 也使用鏈表結構來管理空閑內存塊,鏈表結構體與 heap_2 一樣。heap_4 也定義了兩個局部靜態變量 xStart 和 pxEnd 來表示鏈表頭和尾,其中 pxEnd 是指向 BlockLink_t 的指針。
-
嵌入式
+關注
關注
5148文章
19643瀏覽量
316979 -
內存
+關注
關注
8文章
3118瀏覽量
75204 -
FreeRTOS
+關注
關注
12文章
492瀏覽量
64214
發布評論請先 登錄
基于FreeRTOS內存管理Heap_4.c的實現方法
基于嵌入式裸機或RTOS系統下內存管理方法的探究
FreeRTOS代碼剖析之4:內存管理Heap
FreeRTOS代碼剖析之2:內存管理Heap

淺談內存分配方式 避免內存浪費問題
STM32內存結構介紹,FreeRTOS內存分配技巧,Stack_Size和Heap_Size大小設置

評論