UnmanagedMemoryStream是用来干什么的?

17

有人能告诉我 UnmanagedMemoryStream 类是用来做什么的吗?

我找不到这个类在哪些情况下会有用,希望能得到解答。

2个回答

11
使用UnmanagedMemoryStream允许您在不首先将所有内容复制到托管堆中的情况下读取未管理的流,因此在处理未管理的流时,内存使用较少。这还允许您绕过内存限制,如果您正在处理大量数据,则必须使用UnmanagedMemoryStream,因为MemoryStream存在2GB的限制。

嗨,我已经阅读了你上面提到的文章。只是我想知道这是否真的是真正的好处。非常感谢您的评论 :) - HIyer

5
UnmanagedMemoryStream 允许您访问未被 Common Language Runtime 分配的内存,这主要是有用的,如果您想通过 Stream 接口(例如,因为您已经有操作流的代码)访问由非托管代码分配的内存。

当然,您可以通过 Marshal 类从 C# 中分配非托管内存,并将其包装在 UnmanagedMemoryStream 中,但这只会使生活更加困难,因为您本可以使用 MemoryStream,而且假设手动控制支持流的内存会提供任何好处是真的,真的很不可能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接