UnmanagedMemoryStream的作用是什么?

本文关键字:是什么 作用 UnmanagedMemoryStream | 更新日期: 2023-09-27 18:17:01

谁能告诉我UnmanagedMemoryStream类是用来做什么的?

我不知道这个类如何以及何时有用?

UnmanagedMemoryStream的作用是什么?

使用UnmanagedMemoryStream允许您读取非托管流,而无需首先将所有内容复制到托管堆中,因此在处理非托管流时内存消耗较少。这也允许你绕过内存限制,如果你正在处理大量的数据。

编辑:请注意,MemoryStream有2GB的限制,所以如果你超过这个限制,你必须使用UnmanagedMemoryStream。

UnmanagedMemoryStream允许你访问没有被公共语言运行时分配的内存,这主要是有用的,如果你想通过Stream接口访问由非托管代码分配的内存(例如,因为你已经有了在流上操作的代码)。

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