轉載自:單片機上內存管理(重定義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的內存塊時,如果遇到相鄰內存塊均為空閑塊時,便會將幾塊相鄰的內存塊合並成一塊,以減少內存碎片。