有人可以告诉我UnmanagedMemoryStream
类的用途是什么吗?
我无法弄清楚这门课程如何以及何时有用?
答案 0 :(得分:11)
使用UnmanagedMemoryStream可以读取非托管流,而无需先将所有内容复制到托管堆中,因此在处理非托管流时,内存密集程度较低。如果您处理大量数据,这也可以让您绕过内存限制。这是关于UnmanagedMemoryStream的简短文章。
编辑:请注意,MemoryStream有2GB的限制,因此如果超出此限制,则必须使用UnmanagedMemoryStream。
答案 1 :(得分:5)
UnmanagedMemoryStream
允许您访问公共语言运行时尚未分配的内存,这主要用于您希望通过Stream
接口访问由非托管代码分配的内存(例如,因为您已经拥有在流上运行的代码。)
当然,没有什么可以阻止你从C#中通过Marshal
类分配非托管内存并将其包装在UnmanagedMemoryStream
中,但这只会让生活变得更加困难,因为你可以使用{{1相反,它真的,真的不太可能假设手动控制支持流的内存将带来任何好处。