【发布时间】:2016-11-01 15:27:05
【问题描述】:
我目前使用的 NDA 库(非商业)具有零文档并使用 EMGU。 这是我的问题的示例:
public void example()
{
Image<Gray,byte> exp = new Image<Gray,byte>(128,128);
foo(exp);
exp.Dispose();
}
public bool foo(Image<Gray,byte> bar)
{
//magic here
//bar.Dispose() ??
return true;
}
当我将 EMGU-Image 从一个函数传递到另一个函数时,我是否也必须在被调用函数中调用 .Dispose()?还是在被调用者中调用就足够了?
【问题讨论】:
-
好问题,但已经详细回答了。标准的经验法则是,如果您创建它,则您有责任处置它(除非双方同意转让所有权)。有关更多详细信息,还请查看参数是如何传递的。像这样的对象在 C# 中是通过引用传递的,因此您不会复制该对象。
-
还要注意,您应该使用
using关键字来确保调用 exp.Dispose(),即使抛出异常也是如此。 -
@CodyGray 哦,快!但我发誓我多次使用搜索。但也许我只是无法用正确的词搜索它。感谢您的回答(评论)和链接!
标签: c# memory-management memory-leaks emgucv