heap_4 內(nèi)存分配方法
heap_4 提供了一個(gè)最優(yōu)的匹配算法,不像 heap_2,heap_4 會將內(nèi)存碎片合并成一個(gè)大的可用內(nèi)存塊,它提供了內(nèi)存塊合并算法。內(nèi)存堆為 ucHeap[],大小同樣為 configTOTAL_HEAP_SIZE??梢酝ㄟ^函數(shù) xPortGetFreeHeapSize()來獲取剩余的內(nèi)存大小。
heap_4 特性如下:
1、可以用在那些需要重復(fù)創(chuàng)建和刪除任務(wù)、隊(duì)列、信號量和互斥信號量等的應(yīng)用中。
2、不會像 heap_2 那樣產(chǎn)生嚴(yán)重的內(nèi)存碎片,即使分配的內(nèi)存大小是隨機(jī)的。
3、具有不確定性,但是遠(yuǎn)比 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 也定義了兩個(gè)局部靜態(tài)變量 xStart 和 pxEnd 來表示鏈表頭和尾,其中 pxEnd 是指向 BlockLink_t 的指針。
-
嵌入式
+關(guān)注
關(guān)注
5127文章
19457瀏覽量
313591 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3103瀏覽量
74917 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
485瀏覽量
63592
發(fā)布評論請先 登錄
C語言知識總結(jié):動態(tài)內(nèi)存分配
基于FreeRTOS的STM32F103系統(tǒng)—Heap_4內(nèi)存管理機(jī)制介紹

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

淺談內(nèi)存分配方式 避免內(nèi)存浪費(fè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)存分配方法

評論