我是一個關於uC/os II的新手,並且與內存管理混淆。 在函數OSMemGet()中,我們可以看到該任務需要OSMemPut()中存儲區鏈表(OSMemFreeList)的第一個塊 ,然後將已使用的塊返回到OSMemFreeList的第一個塊,而無需清理內存。 如果有一個任務獲得一個塊,存儲一個int(例如250),然後返回該塊。在這個任務的後面,OSMemGet()再次需要這個塊,int 250仍然在這個塊中?我如何再讀一遍?uC/OS II內存管理,OSMemPut()返回內存塊沒有內存清除
0
A
回答
0
aha,我知道如何獲取之前存儲的內容。我們從OSMemFreeList獲得的每個內存塊,將下一個塊的地址存儲在前4個字節中,我們需要跳過這些字節,然後我們可以再次讀取這些數據,因爲ucos不會清除OSMemPut()中的內存塊。
0
你不應該訪問你已經放回的塊,所以不能保證這將在未來工作。你在前4個字節看到的是下一個塊的地址。空閒塊被存儲爲鏈接列表,因此它們被創建/放回,它們在鏈中重新鏈接。
相關問題
- 1. 塊內存管理
- 2. C++內存管理澄清
- 3. 塊和內存管理
- 4. 管理內容時沒有清除緩存
- 5. 內存管理
- 6. 內存管理
- 7. 內存管理
- 8. 內存管理
- 9. 內存管理
- 10. 內存管理
- 11. 內存管理
- 12. 內存管理
- 13. 內存管理
- 14. 內存管理
- 15. 內存管理
- 16. 內存管理
- 17. 內存管理
- 18. java清除內部內存緩存
- 19. Listview清除內存並釋放內存
- 20. 爲什麼內存塊沒有被垃圾回收器清除?
- 21. Android內存管理與Linux內存管理有什麼區別?
- 22. 清除CLR內存
- 23. 清除堆內存
- 24. OpenCV - 清除內存
- 25. VMWare內存清除
- 26. OSGi內存清理
- 27. 內存泄漏問題,內存管理
- 28. IOS內存和內存管理
- 29. 池內存用C - 內存管理
- 30. 管理內存的內存流