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 有啥用?的主要内容,如果未能解决你的问题,请参考以下文章

dowhile(0) 有啥用? [复制]

DataContext 有啥用?

appStoreReceiptURL 有啥用?

有啥用?和:[重复]

XlaBuilder 有啥用?

构造函数有啥用? [关闭]