我有以下代码:
MemoryStream foo(){
MemoryStream ms = new MemoryStream();
// write stuff to ms
return ms;
}
void bar(){
MemoryStream ms2 = foo();
// do stuff with ms2
return;
}
我分配的 MemoryStream 是否有可能以后因某种原因无法处理?
我有一个同行评审坚持要我手动关闭它,但我找不到信息来判断他的观点是否有效。
最佳答案
你不会泄漏任何东西——至少在当前的实现中是这样。
调用 Dispose 不会更快地清理 MemoryStream 使用的内存。它将阻止您的流在调用后进行读/写调用,这可能对您有用,也可能没有用。
如果您绝对确定您永远不想从 MemoryStream 移动到另一种流,那么不调用 Dispose 不会对您造成任何伤害。然而,这通常是一种很好的做法,部分原因是如果您曾经确实更改为使用不同的 Stream,您不想因为您早早选择了简单的出路而被难以发现的错误所困扰上。 (另一方面,有 YAGNI 论点...)
无论如何都要这样做的另一个原因是新实现可能引入将在 Dispose 上释放的资源。
关于c# - 如果 .NET 中的 MemoryStream 未关闭,是否会产生内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/234059/