liteos不采用malloc的原因?
這是因為內存有限啊,嵌入式的內存就只有幾十K到幾百K,當然你指的嵌入式應該是單片機,不能運行Linux系統的嵌入式系統,可以上Linux系統的嵌入式就可以使用標準C開發了,同樣具有malloc函數。
主要原因是內存太小的問題,深層次的原因是由于標準C庫的內存管理的容易產生碎片,不利于在小內存運行。
通過自己實現內存管理,從本質上是預先分配一大段內存(嵌入式中就是一個大的數組),那后在依據需要保存的對象大小,按特定的方式分配的。
比如,你需要存儲的記錄為256字節,假設需要存取16條記錄,那么,就需要分配256*16=4096字節,這樣就需要4k的數組才可以分配了,這樣就避免了內存碎片。
當然這是以靈活性為代價的,如果是可變的,處理方式就比較復雜了,一般在單片機中需要避免,可以分區域(多分配幾個數組),取最大長度。