如何解决使用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 举报,一经查实,本站将立刻删除。