为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

小怪兽爱吃肉 2019-09-02 15:53:23
我有以下代码:MemoryStream foo(){    MemoryStream ms = new MemoryStream();    // write stuff to ms    return ms;}void bar(){    MemoryStream ms2 = foo();    // do stuff with ms2    return;}我分配的MemoryStream是否有可能以后不能被处理掉?我有一个同行评审坚持我手动关闭它,我找不到信息来判断他是否有一个有效点。
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

你不会泄漏任何东西 - 至少在当前的实施中。

调用Dispose不会更快地清理MemoryStream使用的内存。它被可行的通话,这可能会或可能不会对你有用后读/写调用停止您的流。

如果你完全确定你永远不想从MemoryStream转移到另一种流,那么不打算不调用Dispose会对你造成任何伤害。然而,这通常是一种很好的做法,部分原因是如果你做了改变以使用不同的Stream,你不希望被难以发现的bug所困扰,因为你很早就选择了简单的方法。(另一方面,有YAGNI的论点......)

无论如何,这样做的另一个原因是新实现可能会引入将在Dispose上释放的资源。


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 1855 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信