国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

嵌入式軟件開發的動態內存分配解決問題

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者:Colin Walls ? 2022-06-30 14:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

越來越多的嵌入式軟件開發人員意識到動態內存分配——在需要時獲取大塊內存并在以后放棄它們——雖然方便靈活,但也充滿了問題。這些問題不僅限于嵌入式代碼,許多桌面應用程序都存在影響性能和可靠性的內存泄漏。但在這里我想專注于嵌入式。

質疑使用標準malloc()庫函數的三個關鍵原因:

內存分配可能會失敗。這可能是因為沒有足夠的可用內存(在堆中)來滿足請求。也可能是碎片造成的;有足夠的可用內存,但沒有連續的塊足夠大。

該函數通常是不可重入的。在多線程(多任務)系統中,如果函數被多個任務調用,則它們必須是可重入的。這確保了,如果調用被中斷,對該函數的另一次調用不會危及第一次調用。

它不是確定性的。在實時系統中,可預測性(確定性)至關重要。標準malloc()函數的執行時間非常多變且無法預測。

pYYBAGK9RKuAQrwQAAB-d-GRdEM349.png

這些都是有效的點,并且有解決它們的方法,這通常是使用實時操作系統 (RTOS) 提供的功能的問題。

然而,盡管它們是有效的,但問題可能并不總是像看起來那么重要:

如果發生分配失敗,該函數將返回一個NULL指針。這很容易檢查,并且可以采取行動。

在許多應用程序中,所有內存分配和釋放都在單個任務中執行。這使得重入是不必要的。

并非所有嵌入式系統都是實時的,因此可能不需要確定性。

malloc()可能會帶來另一個挑戰:它相當慢。一些系統需要速度,而不是可預測性,因此需要考慮找到一種方法來提供此功能的功能并具有更高的性能。

該函數性能不佳的主要原因是它提供了很多功能。不同大小的內存塊的管理是相當復雜的。對于許多應用程序來說,這實際上是多余的,因為所需的內存分配都是相同的大小(或少量不同的已知大小)。為固定大小的塊編寫內存分配器非常簡單;只是一個帶有使用標志的數組或者一個鏈表。代碼肯定會更快,甚至可以確定地完成。分配失敗仍然可能發生,但管理起來很簡單。這種類型的內存分配通常由流行的 RTOS 產品提供。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5200

    文章

    20458

    瀏覽量

    334301
  • RTOS
    +關注

    關注

    25

    文章

    866

    瀏覽量

    123046
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    嵌入式軟件開發工具市場新動向:訂閱制趨勢下的中國開發者選擇

    面對軟件業從永久授權模式廣泛轉向訂閱制的行業趨勢,作為行業兩大主流嵌入式軟件開發工具,即Keil MDK與IAR Embedded Workbench也推出了不同的市場策略,正在為中國開發
    的頭像 發表于 01-30 17:20 ?753次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開發</b>工具市場新動向:訂閱制趨勢下的中國<b class='flag-5'>開發</b>者選擇

    RT-Thread Vector軟件包:嵌入式開發動態數組容器 | 技術集結

    RT-Thread Vector軟件包:嵌入式開發動態數組容器 | 技術集結
    的頭像 發表于 01-25 09:33 ?5410次閱讀
    RT-Thread Vector<b class='flag-5'>軟件</b>包:<b class='flag-5'>嵌入式開發</b>的<b class='flag-5'>動態</b>數組容器 | 技術集結

    keil中c語言的動態分配內存

    于處理器的指令集中,效率很高,但是分配內存容量有限。另外,當函數運行結束時,棧區的空間會被自動釋放。 (3)內存映射段。該部分內存主要用于文件映射、
    發表于 01-21 06:04

    嵌入式驅動開發,需要掌握哪些技能?

    單元測試、集成測試、系統測試等,并學會使用調試工具進行問題排查。 6、 其他嵌入式驅動開發,實質也是軟件開發,還需要掌握開發文檔的編輯、軟件
    發表于 01-20 16:46

    嵌入式系統中,動態分配內存可能發生的問題是什么?

    盡管不像非嵌入式計算機那么常見,嵌入式系統還是有從堆(heap)中動態分配內存的過程的。 那么嵌入式系統中,
    發表于 12-22 09:42

    C語言單元測試在嵌入式軟件開發中的作用及專業工具的應用

    功能包括: 測試通過/失敗統計 代碼覆蓋率可視化 執行時間分析 缺陷跟蹤和報告生成 winAMS的圖形化界面可以直觀展示測試結果和覆蓋率數據。 七、總結與展望 C語言單元測試在嵌入式軟件開發中具有不可
    發表于 12-18 11:46

    CW32嵌入式軟件開發的必備知識

    嵌入式軟件開發作為計算機科學和電子工程的交叉領域,要求開發人員具備一系列的專業知識和技能。 而基于CW32的嵌入式軟件開發必備知識包括以下
    發表于 11-28 07:48

    為什么單片機中很少使用malloc,而PC程序頻繁使用呢?

    來進行內存管理,尤其是在處理復雜數據結構和應用時。 開發的復雜度單片機:在嵌入式開發中,開發者往往需要在有限的資源和對實時性的嚴格要求下設計和調試系統。
    發表于 11-20 06:55

    嵌入式軟件測試與專業測試工具的必要性深度解析

    嵌入式系統作為控制、監視或輔助裝置運行的專用計算機系統,其軟件測試面臨著獨特的挑戰和嚴格的要求。專業測試工具在嵌入式軟件開發過程中發揮著不可替代的作用,是確保系統可靠性和安全性的關鍵保
    發表于 09-28 17:42

    2025“芯原杯”全國嵌入式軟件開發大賽圓滿落幕

    此前,2025年7月20日至26日,第四屆“芯原杯”全國嵌入式軟件開發大賽決賽在海口成功舉辦。
    的頭像 發表于 08-06 09:51 ?1351次閱讀

    嵌入式軟件開發常用的軟件有哪些?

    對于初學嵌入式的朋友們,會想要了解嵌入式軟件開發常用的軟件有些,有什么用。那么看以下常用的軟件介紹。 1.Visual Studio Cod
    發表于 07-03 17:06

    如何成為一名嵌入式軟件工程師?

    、Java等)和軟件開發工具,還需要對硬件的工作原理有深入的理解。 在團隊中,嵌入式軟件工程師往往扮演著核心角色,他們的工作直接關系到產品的性能、穩定性和用戶體驗。 02掌握核心技能與知識
    發表于 04-15 14:37

    如何使用LAX_CODEGEN啟用動態內存分配

    我目前正在探索NXP_MBDToolbox_LAX。lax_codegen 生成的代碼基于靜態分配。我想管理大型向量,如何使用 LAX_CODEGEN 啟用動態內存分配
    發表于 04-10 08:09

    嵌入式系統開發圣經【干貨】

    內容包括:嵌入式系統的介紹、嵌入式SoC硬件系統概論、嵌入式系統軟件開發。適用于產品主管、系統設計分析人員及欲進入該領域的工程師。本資料詳細的理論講解,廣泛深入地分析相關的
    發表于 03-12 13:58

    IAR發布云端平臺,助力現代嵌入式軟件開發團隊

    該平臺為嵌入式軟件開發人員提供前所未有的自由度與靈活性,助力開發團隊在工具選擇和日常工作流中實現更高效的協作與創新。
    的頭像 發表于 03-12 11:56 ?822次閱讀