什么是UnmanagedMemoryStream?

时间:2011-12-05 14:26:47

标签: c# io unsafe

有人可以告诉我UnmanagedMemoryStream类的用途是什么吗?

我无法弄清楚这门课程如何以及何时有用?

2 个答案:

答案 0 :(得分:11)

使用UnmanagedMemoryStream可以读取非托管流,而无需先将所有内容复制到托管堆中,因此在处理非托管流时,内存密集程度较低。如果您处理大量数据,这也可以让您绕过内存限制。这是关于UnmanagedMemoryStream的简短文章。

编辑:请注意,MemoryStream有2GB的限制,因此如果超出此限制,则必须使用UnmanagedMemoryStream。

答案 1 :(得分:5)

UnmanagedMemoryStream允许您访问公共语言运行时尚未分配的内存,这主要用于您希望通过Stream接口访问由非托管代码分配的内存(例如,因为您已经拥有在流上运行的代码。)

当然,没有什么可以阻止你从C#中通过Marshal类分配非托管内存并将其包装在UnmanagedMemoryStream中,但这只会让生活变得更加困难,因为你可以使用{{1相反,它真的,真的不太可能假设手动控制支持流的内存将带来任何好处。