首頁>Club>
3
回覆列表
  • 1 # 新能源BMS

    我的態度:

    在嵌入式中(使用微控制器MCU,且沒有使用嵌入式作業系統)的系統中,不要動態分配記憶體。

    原因:

    (1)動態分配記憶體的風險大,容易導致系統崩潰,風險主要來自於動態分配的記憶體不進行釋放(由於疏忽,或是執行過程中的異常,導致malloc後,不free),最終導致RAM訪問越界,造成系統復位。我工作中就遇到過兩次這種情況:一個是產品在現場幾分鐘後就會復位,最終查出來原因是,現場干擾導致程式malloc後進入異常處理分支,而這個分支沒有free;第二次是做bootloader,載入的bin檔案,總是無法正常執行,將malloc函式修改去掉以後,功能正常,原因不明。

    (2)動態分配記憶體意義不大,動態分配記憶體的唯一作用就是記憶體的分時複用。但是這個作用大部分可以透過定義區域性變數的方式實現。

    因此,嵌入式系統,穩定性第一位,儘量不要使用malloc。

    在公司看到嵌入式使用malloc的,我立刻會送他六字“別裝逼,趕緊改”。

  • 2 # 遛電子的老李

    看使用場景,一般是禁止使用。

    晶片級別開發。晶片資源有限,工程師一定要知道這片記憶體用於幹嘛的,動態分配記憶體很容易出問題。

    而且很多晶片級編譯器都不支援malloc,要動態分配記憶體需要自己寫分配函式。

    系統級別開發。帶作業系統的話這種風險就小很多,堆疊由作業系統分配,或者作業系統會把malloc函式重寫,安全性會高很多。

  • 3 # 老饅頭簸箕

    看什麼樣的“嵌入式”。

    對於資源極度受限的“高度整合”系統,比如我們的星載計算機,2M位元組記憶體,就肯定不適合用。為此特別發展出了一套專用的開發系統規範“Ravenscar Profile”。

    如果是能跑Linux的小系統,可以適當使用,自己做好記憶體洩漏相關的測試。

  • 中秋節和大豐收的關聯?
  • 小數、分數、百分數在英語中如何表示?