如果.NET中的MemoryStream未关闭,是否会创建内存泄漏?

我有以下代码:


MemoryStream foo(){

    MemoryStream ms = new MemoryStream();

    // write stuff to ms

    return ms;

}


void bar(){

    MemoryStream ms2 = foo();

    // do stuff with ms2

    return;

}

我分配的MemoryStream是否有可能以后不能被处理掉?


我有一个同行评审坚持我手动关闭它,我找不到信息来判断他是否有一个有效点。


小怪兽爱吃肉
浏览 1856回答 3
3回答

慕桂英3389331

你不会泄漏任何东西 - 至少在当前的实施中。调用Dispose不会更快地清理MemoryStream使用的内存。它会被可行的通话,这可能会或可能不会对你有用后读/写调用停止您的流。如果你完全确定你永远不想从MemoryStream转移到另一种流,那么不打算不调用Dispose会对你造成任何伤害。然而,这通常是一种很好的做法,部分原因是如果你做了改变以使用不同的Stream,你不希望被难以发现的bug所困扰,因为你很早就选择了简单的方法。(另一方面,有YAGNI的论点......)无论如何,这样做的另一个原因是新实现可能会引入将在Dispose上释放的资源。
打开App,查看更多内容
随时随地看视频慕课网APP