从MemoryStream复制到另一个 - 内存泄漏?

时间:2014-03-02 19:21:51

标签: c# .net memory-leaks memorystream

我想知道以下代码是否存在内存泄漏问题以及如何解决它。

 MemoryStream stream_medium_temp = new MemoryStream();
 ms_medium.Position = 0;
 ms_medium.CopyTo(stream_medium_temp);

我想将流复制到另一个流。我首先创建了stream_medium_temp实例,该实例已经为其分配了内存。现在我将一个流复制到其中。这是否意味着我初始化stream_medium_temp时分配的内存空间配置不正确,如果是这样,我如何在代码中遇到这种情况。

stream_medium_temp被放置在一个函数内,在该函数中,它通过引用传递。我关注的是当流首次为stream_medium_temp初始化时以及在将流复制到它之后的内存分配。

让我举个例子:

stream_medium_temp初始化 - >内存分配1-50(例如)。 stream_medium_temp获取流复制到它 - >内存分配60-110

如果发生了什么,如何配置1-50内存分配?

感谢。

2 个答案:

答案 0 :(得分:1)

您的代码没有任何问题,假设两个MemoryStream最终都是通过using.Dipose()处理的。

您不必手动管理IDisposable对象分配的内存 - 这就是using和/或Dispose()的用途。

请注意,MemoryStream实际上不会分配任何需要处理的资源,因此在技术上不需要处理。但它继承自Stream,它实现IDisposable;因此,它也是IDisposable,处理任何IDisposable是一种好习惯。

答案 1 :(得分:0)

当您复制数据时,原始数据仍然存在。

如果您不希望两个数据实例都存在,我建议您在复制数据时删除数据。