我們使用Micrium的μC/ OS-III RTOS和瑞薩RX62N。MicriμmμC/ OS-III RTOS中的分配和免費
我們建立了一個系統,我們必須動態地分配和釋放數據。我們發現函數malloc()和免費()與RTOS不能很好地工作。 但是RTOS爲此有一個自定義函數; Mem_HeapAlloc()函數。 這個函數分配一些RTOS'製成'堆'的內存。問題在於它沒有免費的功能,可能是因爲一切都進入了堆池。
在實時操作系統中也可以建立一個池。這個池的問題是所有包含的塊都需要具有相同的大小。由於我們正在分配和釋放不同的尺寸,這對我們來說不是一個好的解決方案。
我們發現了一個描述存儲器RTOS功能的文檔,第4章描述了這些功能。
有人知道我們如何解決這個問題嗎?
一些解決方案,我們有媒體鏈接
- 讓所有的塊尺寸相同,最大的分配。 我們有很多開銷,因爲最小和最大的分配差別很大。
- 不要做一個免費的。 這是沒有解決辦法,會有內存泄漏。
希望有人能幫助我們。如果事情是不明確的,請讓我
在此先感謝
我們正在爲結構分配空間,所以分配必須繼續。 – Hendrik
我想這將是堆管理員的責任,你正在使用拆分你的結構在多個對象中的分配。 – ravi
我們並沒有真正使用堆管理器,只是由RTOS功能提供空間,並且這些空間不保留任何管理。 – Hendrik