什么是UnmanagedMemoryStream?

HIy*_*yer 16 c# io unsafe

有人能告诉我这UnmanagedMemoryStream堂课的用途吗?

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

Ric*_*ein 11

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

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


Jon*_*Jon 5

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

当然,没有什么可以阻止你从C#中通过Marshal类分配非托管内存并将其包装在一个中UnmanagedMemoryStream,但这只会让生活变得更加困难,因为你可能已经使用了MemoryStream它而且真的,真的不太可能假设手动控制内存支持流将提供任何好处.