我是一个关于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. 管理内存的内存流