色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

FreeRTOS內(nèi)存是動態(tài)分配嗎?

strongerHuang ? 來源:嵌入式專欄 ? 作者:嵌入式專欄 ? 2023-03-24 09:55 ? 次閱讀

你可能會好奇:FreeRTOS可以創(chuàng)建任務(wù),也可以刪除任務(wù),它是動態(tài)分配的內(nèi)存嗎?

xTaskCreate(LED_Task, "LED_Task", 128, NULL, 6, NULL);

這個問題如果要細(xì)說,牽涉到的知識點(diǎn)比較多,下面挑幾個重要相關(guān)的內(nèi)容來解答這個問題。

內(nèi)存靜態(tài)和動態(tài)分配

內(nèi)存分配一般分為:靜態(tài)和動態(tài)分配。

1.靜態(tài)分配內(nèi)存

什么叫靜態(tài)分配內(nèi)存?

簡單來說,就是在編譯的時候就分配的內(nèi)存。你可以理解為芯片上電,指定的某區(qū)域(地址)內(nèi)存就被占用了。

一般有幾種情況,比如:

啟動分配堆棧:

Stack_Size    EQU     0x400

定義一個靜態(tài)變量,這個就是最好理解的一個例子:

static int a;

定義一個全局變量/數(shù)組等:

intchar;

2.動態(tài)分配內(nèi)存

什么叫動態(tài)分配內(nèi)存? 與靜態(tài)分配對應(yīng),動態(tài)就是不確定在某個時刻分配的內(nèi)存。 最常見的就是某個函數(shù)定義一個局部變量,如果這個函數(shù)被調(diào)用,就會臨時分配一個內(nèi)存空間給這個變量,執(zhí)行完函數(shù),這個內(nèi)存就被釋放了。

void UART_Send(char *p)
{
  char buf[10];
  //......
}
還有一個經(jīng)典的就是 malloc() 動態(tài)分配內(nèi)存函數(shù),這個函數(shù)對于普通開發(fā)者一般不建議使用,因為存在一些“弊端”。 比如:忘記使用 free() 釋放內(nèi)存,還有就是容易產(chǎn)生“內(nèi)存碎片”等。

梳理FreeRTOS內(nèi)存分配

1.全局?jǐn)?shù)組(堆棧)

FreeRTOS的內(nèi)存是在 FreeRTOSConfig.h 文件分配的一個全局?jǐn)?shù)組,這個內(nèi)存大小由用戶自己根據(jù)情況分配,比如:

#define configTOTAL_HEAP_SIZE     ((size_t)(10 * 1024))

33ce5790-c985-11ed-bfe3-dac502259ad0.png

數(shù)組(堆棧)ucHeap:

33ebf3c2-c985-11ed-bfe3-dac502259ad0.png

這個數(shù)組是 FreeRTOS 系統(tǒng)的“堆棧”,創(chuàng)建任務(wù)、信號量、隊列等都會調(diào)用這個堆棧。

2.創(chuàng)建任務(wù)

FreeRTOS創(chuàng)建任務(wù),分配堆棧大小,比如:128“字”

xTaskCreate(LED_Task, "LED_Task", 128, NULL, 6, NULL);

提醒:這里“字”是單位,比如:uint32_t

通過進(jìn)一步追蹤代碼,你會發(fā)現(xiàn)在“創(chuàng)建任務(wù)”函數(shù)中調(diào)用了【pvPortMalloc】函數(shù)分配內(nèi)存。

34011220-c985-11ed-bfe3-dac502259ad0.png

這是系統(tǒng)自定義的函數(shù),并非標(biāo)準(zhǔn)的malloc函數(shù)。 看似是在“動態(tài)分配內(nèi)存”,實際是在“瓜分”上面定義的全局?jǐn)?shù)組(堆棧)。 具體如何“瓜分”的,可以參看“heap_4.c”源代碼(通過我們使用“heap_4.c”內(nèi)存分配方式,如果其他的可以參看對應(yīng)的源碼)。 其他創(chuàng)建信號量、隊列也是類似原理。

3.刪除任務(wù)

FreeRTOS刪除任務(wù),會調(diào)用“vPortFree()”函數(shù)釋放對應(yīng)的內(nèi)存。

3412c9ac-c985-11ed-bfe3-dac502259ad0.png

這里會牽涉到 TCB(任務(wù)控制塊),就是任務(wù)相關(guān)的這一塊數(shù)據(jù)。(這里不細(xì)說,后面有機(jī)會再說)。

FreeRTOS是動態(tài)分配內(nèi)存嗎?

看到這里,你能回答開篇這個問題了嗎?

答案:FreeRTOS不是動態(tài)分配內(nèi)存,只是模擬了動態(tài)分配的方式,實際的內(nèi)存是靜態(tài)分配的。

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

    關(guān)注

    8

    文章

    3081

    瀏覽量

    74592
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4353

    瀏覽量

    63292
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    484

    瀏覽量

    62772
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    666

    瀏覽量

    33211
  • 動態(tài)分配
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    9760

原文標(biāo)題:FreeRTOS內(nèi)存是動態(tài)分配嗎?

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    C語言既然可以自動為變量分配內(nèi)存,為什么還要用動態(tài)分配內(nèi)存呢?

    不知道大家在學(xué)習(xí)C語言動態(tài)分配內(nèi)存的時候有沒有過這樣的疑問,既然系統(tǒng)可以自動幫我們分配內(nèi)存,為什么還需要我們程序員自己去分配
    發(fā)表于 12-13 11:14 ?1134次閱讀

    FreeRTOS內(nèi)存機(jī)制詳解

    FreeRTOS是一種實時操作系統(tǒng),它提供了多種內(nèi)存分配方式,包括動態(tài)內(nèi)存分配和靜態(tài)內(nèi)存
    的頭像 發(fā)表于 12-31 16:49 ?2965次閱讀
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>內(nèi)存</b>機(jī)制詳解

    怎么在LL2和DDR3上用malloc同時動態(tài)分配內(nèi)存

    程序中需要用malloc動態(tài)分配兩塊內(nèi)存,分別在LL2和DDR3上,請問用cmd動態(tài)分配的空間都是在.sysmem里面嗎?怎么在兩塊內(nèi)存中都動態(tài)
    發(fā)表于 06-21 09:29

    請教關(guān)于在堆區(qū)的動態(tài)分配內(nèi)存問題

    ;]CmplxSgn_t;在定義信號之后會動態(tài)分配一段arrayLen長的內(nèi)存給ptSignalArray,在信號的使命結(jié)束后會把內(nèi)存釋放掉。但是俺剛接觸dsp不久,有資料說頻繁的申請/釋放內(nèi)
    發(fā)表于 08-07 08:29

    請問使用動態(tài)內(nèi)存分配安全嗎?

    在使用完畢后,需要顯式的釋放之,這就要求程序員對動態(tài)分配內(nèi)存了然于胸。在非常重視安全(safety-critical)的嵌入式C語言程序開發(fā)中,動態(tài)內(nèi)存分配廣泛被認(rèn)為是禁忌。使用C語
    發(fā)表于 12-15 06:10

    使用動態(tài)內(nèi)存分配安全嗎

    安全嗎?”為了更加安全穩(wěn)定,美國軍方禁止在C語言程序中使用malloc()使用動態(tài)內(nèi)存分配安全嗎?在C語言程序開發(fā)中,動態(tài)內(nèi)存分配允許程序在運(yùn)行時向系統(tǒng)申請
    發(fā)表于 12-15 07:44

    CH545芯片可以使用malloc函數(shù)進(jìn)行內(nèi)存動態(tài)分配嘛?

    如題,請問貴公司的單片機(jī)芯片(如CH545)可以使用malloc函數(shù)進(jìn)行內(nèi)存動態(tài)分配嘛?
    發(fā)表于 06-24 12:46

    請問沒有MMU的ARM芯片是否支持使用malloc()函數(shù)動態(tài)分配內(nèi)存呢?

    請問沒有MMU的ARM芯片是否支持使用malloc()函數(shù)動態(tài)分配內(nèi)存呢?求解答|
    發(fā)表于 10-17 15:41

    LPCXpresso55S16如何從閃存中動態(tài)分配內(nèi)存

    我正在使用 LPCXpresso55S16,我想從閃存中動態(tài)分配內(nèi)存,向其中寫入數(shù)據(jù),從中讀取數(shù)據(jù),并在需要時釋放它。是否有教程或任何人都可以幫助我嗎?
    發(fā)表于 06-09 06:57

    動態(tài)分配內(nèi)存知識

    最近學(xué)習(xí)動態(tài)分配內(nèi)存 這個程序是我自己編的,呵呵,好有成就感啊... #include stdio.h/*Feng原創(chuàng)...*/ #define N 2 char *GetCity(void
    發(fā)表于 05-28 15:27 ?99次下載

    零矢量動態(tài)分配的-直接轉(zhuǎn)矩控制

    零矢量動態(tài)分配的-直接轉(zhuǎn)矩控制
    發(fā)表于 01-21 11:49 ?1次下載

    關(guān)于FreeRTOS內(nèi)存分配多少才合適

    FreeRTOS內(nèi)存分配多少才合適
    的頭像 發(fā)表于 03-06 15:04 ?1.9w次閱讀

    51單片機(jī)內(nèi)存動態(tài)分配

    51單片機(jī)內(nèi)存動態(tài)分配序言最近玩51單片機(jī)碰到一個問題,51中malloc函數(shù)并不能像在PC上一樣正常運(yùn)行,這涉及到了內(nèi)存池的概念。下面就來演示一下如何在單片機(jī)上也可正常使用動態(tài)內(nèi)存
    發(fā)表于 11-12 14:36 ?11次下載
    51單片機(jī)<b class='flag-5'>內(nèi)存</b><b class='flag-5'>動態(tài)分配</b>

    為什么需要動態(tài)分配內(nèi)存

    今天的文章會用到以下知識點(diǎn),大家可以作為了解內(nèi)容去學(xué)習(xí):靜態(tài)內(nèi)存動態(tài)內(nèi)存、堆、棧、全局變量、指針等;
    的頭像 發(fā)表于 02-17 10:02 ?3052次閱讀
    為什么需要<b class='flag-5'>動態(tài)分配</b><b class='flag-5'>內(nèi)存</b>?

    C語言怎么建立內(nèi)存動態(tài)分配

    在C語言中,全局變量是分配在內(nèi)存中的靜態(tài)存儲區(qū)的,非靜態(tài)的局部變量,包括形參是分配在內(nèi)存中的動態(tài)存儲區(qū)的,這個存儲區(qū)是一個“棧”的區(qū)域。
    的頭像 發(fā)表于 03-10 15:30 ?926次閱讀
    主站蜘蛛池模板: 亚洲中文 字幕 国产 综合 | 99久久精品免费国产一区二区三区 | 国产精品久久久久久久A片冻果 | 精品国产在线手机在线 | voyeurhit农村夫妻偷拍 | 中国少妇内射XXXHD免费 | 2019欧洲hd| 精品亚洲一区二区在线播放 | 好男人好资源在线观看 | 东北女人奶大毛多水多 | 精品午夜国产福利观看 | 国产午夜免费视频片夜色 | 西西人体大胆牲交PP6777 | 69式国产真人免费视频 | 粉嫩极品国产在线观看 | 俄罗斯搜索引擎Yandex推广入口 | 午夜亚洲精品不卡在线 | 乳巨揉みま痴汉电车中文字幕动漫 | 亚洲 日韩 欧美 另类 蜜桃 | 欧洲精品一区二区不卡观看 | 美女也烦恼主题曲 | 日本伦理电影聚 | 国内精品偷拍在线观看 | 双性精跪趴灌满h室友4p | 亚洲免费在线播放 | 欧美性xxx免费看片 欧美性xxx极品 | 夜夜躁日日躁狠狠 | 一级毛片免费视频网站 | 校园女教师之禁区 | 俄罗斯mm| 欧美日韩精品一区二区三区四区 | 久久91精品久久久久久水蜜桃 | 色综合精品无码一区二区三区 | 久久无码人妻中文国产 | 欧亚一卡二卡日本一卡二卡 | 亚洲午夜精品久久久久久抢 | 99re久久热最新地址一 | a视频免费在线观看 | 欧美亚洲国产免费高清视频 | 朝鲜女人性猛交 | 久久久久99精品成人片三人毛片 |