一个任务可以从堆中分配内存以供其他任务(例如 T2)释放吗?
我是 VxWorks 的新手。我对 VxWorks 中的内存分配/释放有疑问:
一个任务是否可以从堆(例如 T1)分配内存,并且可以由其他任务(例如 T2)释放内存?
I am new to VxWorks. I have a doubt regarding the memory allocation/deallocation in VxWorks:
Can one task allocate memory from the heap(say T1) and that can be freed by some other task (say T2)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果两个任务都在相同的内存上下文中执行,那么是的,这是完全可能的。
如果您的任务在内核上下文中执行(或者您正在使用 vxWorks 5.x),那么您所描述的内容没有问题。
如果两个任务都在同一个 RTP(实时进程)中执行,则可以从 T2 释放内存。
您不能做的是在不同的内存上下文中释放内存,即从 RTP 释放内核内存,或者让 RTP 2 释放由 RTP1 分配的内存。
If both tasks are executing in the same memory context, then yes it is totally possible.
If your tasks are executing in the kernel context (or you are using vxWorks 5.x) then there is no problem with what you are describing.
If both tasks are executing in the same RTP (Real-Time Process), the you can release the memory from T2.
What you can't do is release memory in different memory contexts i.e. release kernel memory from an RTP, or have RTP 2 release memory allocated by RTP1.