單片機上內存管理(重定義malloc free)的實現


轉載自:單片機上內存管理(重定義malloc free)的實現

https://blog.csdn.net/qq_21475601/article/details/77579462?locationNum=7&fps=1

https://files.cnblogs.com/files/CodeWorkerLiMing/alloc.7z

在單片機上經常會需要用到像標准c庫中的內存分配,可是單片機並沒有內存管理機制,如果直接調用庫函數(malloc,free...),會導致內存碎片越用越多,很容易使系統崩潰掉,這里分享一個自己寫的適用於單片機的內存分配方法,具備輕量級的內存管理能力,有效減少內存碎片,提高單片機系統工作穩定性。

   如下圖,heap_start開始的地方,是我們存放用戶數據的地方,在heap_end之前都是大小固定的一個個內存管理塊,內存管理塊用於記錄每次用戶申請內存的地址、大小、釋放情況。在malloc時,會優先選擇和用戶申請空間最相當的內存塊,以減少內存碎片產生。在free的內存塊時,如果遇到相鄰內存塊均為空閑塊時,便會將幾塊相鄰的內存塊合並成一塊,以減少內存碎片。

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM