UnmanagedMemoryStream 有啥用?
Posted
技术标签:
【中文标题】UnmanagedMemoryStream 有啥用?【英文标题】:What is the UnmanagedMemoryStream for?UnmanagedMemoryStream 有什么用? 【发布时间】:2012-01-13 06:41:44 【问题描述】:谁能告诉我UnmanagedMemoryStream
类的用途是什么?
我不知道这个类如何以及何时有用?
【问题讨论】:
【参考方案1】:使用 UnmanagedMemoryStream 可以让您读取非托管流,而无需先将所有内容复制到托管堆中,因此在处理非托管流时内存占用较少。如果您要处理大量数据,这也可以让您绕过内存限制。这是一篇关于UnmanagedMemoryStream 的短文。
编辑:请注意,MemoryStream 有 2GB 的限制,因此如果超出此限制,则必须使用 UnmanagedMemoryStream。
【讨论】:
您好,我已经阅读了您上面提到的文章。只是我想知道这是否真的是真正的好处。非常感谢您的 cmets :)【参考方案2】:UnmanagedMemoryStream
允许您访问尚未由公共语言运行时分配的内存,这主要在您想通过Stream
接口访问由非托管代码分配的内存时很有用(例如,因为您已经有代码对流进行操作)。
当然,没有什么可以阻止您通过 Marshal
类从 C# 中分配非托管内存并将其包装在 UnmanagedMemoryStream
中,但这只会让生活变得更加困难,因为您可以使用 MemoryStream
,假设手动控制支持流的内存不太可能带来任何好处。
【讨论】:
以上是关于UnmanagedMemoryStream 有啥用?的主要内容,如果未能解决你的问题,请参考以下文章