问题描述
我想使用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 (将#修改为@)