使用SafeHandle获取本地资源的最佳方法是什么?

问题描述

我想使用SafeHandle进行某些图像处理。它基本上将指向一个对象,该对象引用一些保存有图像堆栈的内存。为了确保资源不会泄漏,我认为最好返回该句柄作为参考。我在这里想的正确吗?我的想法是,即使在分配图像后出了点问题,我也总是会找回SafeHandle。

因此在受管端(c#)

[DllImport(@"Native.dll")]
internal extern static int create_image_stack(ref MySafehandle h,int size);

SomeFunction(...)
{
 MySafehandle h = new MySafehandle();
 if (create_image_stack(ref h,number_of_images))
 ...
}

在本机方面:

int create_image_stack(ImageStack **img,int number_of_images)
{
...
img[0] = new ImageStack(number_of_images);
...
}

澄清一下。我已经对此进行了测试,并且效果很好。但是我也看到了解决此问题的其他方法,我不知道哪种方法更好,尤其是某些方法是否存在陷阱。替代方法

在受管理方(c#)

[DllImport(@"Native.dll")]
internal extern static MySafehandle create_image_stack(int size);

SomeFunction(...)
{

 MySafehandle h = create_image_stack(number_of_images);
 ...
}

在本机方面:

ImageStack *create_image_stack(int number_of_images)
{
...
return new ImageStack(number_of_images);
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)