在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

heap_1內(nèi)存分配方法

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:嵌入式Linux系統(tǒng)開 ? 2023-07-30 10:33 ? 次閱讀

heap_1 內(nèi)存分配方法

動 態(tài) 內(nèi) 存 分 配 需 要 一 個 內(nèi) 存 堆 , FreeRTOS 中 的 內(nèi) 存 堆 為 ucHeap[] , 大 小 為configTOTAL_HEAP_SIZE,這個前面講 FreeRTOS 配置的時候就講過了。不管是哪種內(nèi)存分配方法,它們的內(nèi)存堆都為 ucHeap[],而且大小都是 configTOTAL_HEAP_SIZE。內(nèi)存堆在文件heap_x.c(x 為 1~5)中定義的,比如 heap_1.c 文件就有如下定義:

#if(configAPPLICATION_ALLOCATED_HEAP==1)

extern

uint8_t

ucHeap[configTOTAL_HEAP_SIZE];

//需要用戶自行定義內(nèi)存堆

#else

static

uint8_t

ucHeap[configTOTAL_HEAP_SIZE];

//編譯器決定

#endif

當(dāng)宏 configAPPLICATION_ALLOCATED_HEAP 為 1 的時候需要用戶自行定義內(nèi)存堆,否則的話由編譯器來決定,默認(rèn)都是由編譯器來決定的。如果自己定義的話就可以將內(nèi)存堆定義到外部 SRAM 或者 SDRAM 中。

heap_1 實(shí)現(xiàn)起來就是當(dāng)需要 RAM 的時候就從一個大數(shù)組(內(nèi)存堆)中分一小塊出來,大數(shù)組(內(nèi)存堆)的容量為 configTOTAL_HEAP_SIZE。使用函數(shù) xPortGetFreeHeapSize() 可以獲取內(nèi)存堆中剩余內(nèi)存大小。

heap_1 特性如下:

1、適用于那些一旦創(chuàng)建好任務(wù)、信號量和隊(duì)列就再也不會刪除的應(yīng)用,實(shí)際上大多數(shù)的 FreeRTOS 應(yīng)用都是這樣的。

2、具有可確定性(執(zhí)行所花費(fèi)的時間大多數(shù)都是一樣的),而且不會導(dǎo)致內(nèi)存碎片。

3、代碼實(shí)現(xiàn)和內(nèi)存分配過程都非常簡單,內(nèi)存是從一個靜態(tài)數(shù)組中分配到的,也就是適合于那些不需要動態(tài)內(nèi)存分配的應(yīng)用。

如果使用 heap_1,一旦申請內(nèi)存成功就不允許釋放!但是 heap_1 的內(nèi)存分配過程簡單,如此看來 heap_1 似乎毫無任何使用價值啊。千萬不能這么想,有很多小型的應(yīng)用在系統(tǒng)一開始就創(chuàng)建好任務(wù)、信號量或隊(duì)列等,在程序運(yùn)行的整個過程這些任務(wù)和內(nèi)核對象都不會刪除,那么這個時候使用 heap_1 就很合適的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5095

    文章

    19189

    瀏覽量

    307987
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3064

    瀏覽量

    74382
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    484

    瀏覽量

    62419
收藏 人收藏

    評論

    相關(guān)推薦

    C語言知識總結(jié):動態(tài)內(nèi)存分配

    動態(tài)內(nèi)存分配就 是指在程序執(zhí)行的過程中動態(tài)地分配或者回收存儲空間的分配內(nèi)存方法。動態(tài)
    發(fā)表于 10-24 15:52 ?900次閱讀

    請問cmd中heap默認(rèn)是在哪個段分配呢?

    我cmd文件分配如下,請問:1 stack分配是根據(jù)在子函數(shù)中用到的最大的局部變量,比如數(shù)組大小來分配的么?而heap
    發(fā)表于 10-25 09:53

    基于FreeRTOS內(nèi)存管理Heap_4.c的實(shí)現(xiàn)方法

    Heap_4.c,發(fā)現(xiàn)它的實(shí)現(xiàn)方法還挺簡單的,而且比較實(shí)用,不過為了要像原子哥的內(nèi)存管理那樣管理三個內(nèi)存池,還需要稍稍修改一下,我已經(jīng)修改好了,測試了一下沒發(fā)現(xiàn)問題,上傳上來給大家瞧瞧
    發(fā)表于 07-15 21:46

    嵌入式系統(tǒng)內(nèi)存分配方式是怎樣的

    一篇講透嵌入式系統(tǒng)內(nèi)存分配方
    發(fā)表于 12-17 07:40

    一種嵌入式系統(tǒng)的內(nèi)存分配方

    嵌入式系統(tǒng)中對實(shí)時性的保證,要求內(nèi)存分配過程要盡可能地快。因此在嵌入式系統(tǒng)中,不可能采用通用操作系統(tǒng)中復(fù)雜而完善的內(nèi)存分配策略,一般都采用簡單、快速的
    發(fā)表于 05-24 14:30 ?2403次閱讀

    FreeRTOS代碼剖析之1內(nèi)存管理Heap

    FreeRTOS8.0.1進(jìn)行剖析研究。參考資料為《Using the FreeRTOS Real Time Kernel-A Practical Guide opened》。 Heap_1.c的注釋說明,Heap_1
    發(fā)表于 02-09 05:25 ?992次閱讀
    FreeRTOS代碼剖析之<b class='flag-5'>1</b>:<b class='flag-5'>內(nèi)存</b>管理<b class='flag-5'>Heap</b>

    FreeRTOS代碼剖析之2:內(nèi)存管理Heap

    在FreeRTOS8.0.1這個版本中,一共有四個內(nèi)存堆模型。這一次講的就是第二個模型Heap_2.c。從一開始就可以看到注釋中對Heap_2的模型解釋:這是對pvPortMalloc
    發(fā)表于 02-09 05:28 ?875次閱讀
    FreeRTOS代碼剖析之2:<b class='flag-5'>內(nèi)存</b>管理<b class='flag-5'>Heap</b>

    淺談內(nèi)存分配方式 避免內(nèi)存浪費(fèi)問題

    說到內(nèi)存分配方式,就不得不提連續(xù)分配方式。這種方式是指為一個用戶程序分配一個連續(xù)的內(nèi)存空間,它曾被廣泛的用于20世紀(jì)60~70年代的OS中
    發(fā)表于 03-03 11:22 ?1466次閱讀

    什么是堆內(nèi)存?堆內(nèi)存是如何分配的?

    在一般的編譯系統(tǒng)中,堆內(nèi)存分配方向和棧內(nèi)存是相反的。當(dāng)棧內(nèi)存從高地址向低地址增長的時候,堆內(nèi)存從低地址向高地址
    的頭像 發(fā)表于 07-05 17:58 ?1w次閱讀

    韋東山freeRTOS系列教程之內(nèi)存管理(2)

    文章目錄 教程目錄 2.1 為什么要自己實(shí)現(xiàn)內(nèi)存管理 2.2 FreeRTOS的5種內(nèi)存管理方法 2.2.1 Heap_1 2.2.2 Heap
    發(fā)表于 11-29 16:58 ?1064次閱讀
    韋東山freeRTOS系列教程之<b class='flag-5'>內(nèi)存</b>管理(2)

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

    heap_2 內(nèi)存分配方法 heap_2 提供了一個更好的分配算法,不像 heap_1那樣,
    的頭像 發(fā)表于 07-30 10:36 ?700次閱讀

    FreeRTOS heap_3內(nèi)存分配方法

    heap_3 內(nèi)存分配方法 這個分配方法是對標(biāo)準(zhǔn) C 中的函數(shù) malloc()和 free()的簡單封裝,F(xiàn)reeRTOS 對這兩個函數(shù)做了線程保護(hù)。
    的頭像 發(fā)表于 07-30 10:40 ?792次閱讀
    FreeRTOS <b class='flag-5'>heap</b>_3<b class='flag-5'>內(nèi)存</b><b class='flag-5'>分配方法</b>

    heap_4內(nèi)存分配方法介紹

    heap_4 內(nèi)存分配方法 heap_4 提供了一個最優(yōu)的匹配算法,不像 heap_2,heap
    的頭像 發(fā)表于 07-30 10:42 ?999次閱讀

    FreeRTOS heap_5內(nèi)存分配方法介紹

    heap_5 內(nèi)存分配方法 heap_5 使用了和 heap_4 相同的合并算法,內(nèi)存管理實(shí)現(xiàn)起
    的頭像 發(fā)表于 07-30 10:47 ?1126次閱讀

    如何自定義內(nèi)存控制器的設(shè)置

    在FreeRTOS中自定義內(nèi)存控制器的設(shè)置,主要涉及到內(nèi)存分配策略的選擇和配置。FreeRTOS提供了多種內(nèi)存分配策略,如
    的頭像 發(fā)表于 09-02 14:28 ?587次閱讀
    主站蜘蛛池模板: 国产日韩欧美综合色视频在线 | 黄色大片a级| 狠狠干干干 | 亚洲成综合人影院在院播放 | 女同性大尺度床戏视频 | 免费在线观看一级毛片 | 国产日日干 | 中文字幕一二三四区2021 | 国产精品三级在线播放 | 久久好色| 天天综合干 | bt在线搜索 | 色婷婷色99国产综合精品 | 国产女人视频免费观看 | 在线观看播放视频www | 日韩免费观看一级毛片看看 | 色妞色综合久久夜夜 | 美国69bjfree18vide视频 | 色天天综合色天天碰 | h在线免费 | wwwww色| 大象焦伊人久久综合网色视 | 欧美黄色大片免费观看 | 色综合天天综一个色天天综合网 | 国产精品爱久久久久久久三级 | 最新看片网址 | 久久性久久性久久久爽 | 久久精品国产亚洲综合色 | 亚洲午夜小视频 | 国产免费人人看大香伊 | 国产yin乱大巴视频 国产爱v | 91精品欧美激情在线播放 | 人人射人人草 | 日本不卡视频在线视频观看 | 毛片aa| sss欧美华人整片在线观看 | 久久看免费视频 | 四虎永久免费在线 | 一二三区视频 | 天天看片中文字幕 | 人人爱天天操 |