从 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 内存分配?

谢谢。

你的代码没有错,假设两个 MemoryStream 最终都通过 using 或通过 .Dipose() 被释放。

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

请注意,MemoryStream实际上不会分配任何需要释放的资源,因此在技术上不需要释放。但它继承自Stream,实现IDisposable;因此,它也IDisposable,处理任何IDisposable的东西都是很好的做法。

好吧,当你复制数据时,原始数据仍然存在。

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