c# - 如何在c#中正确固定GC对象以防止AccessViolationException?

问题描述

我需要固定一个非常小的位图图像的 Scan0。通过这样做,我想防止 GC 在内存中移动它。我使用了一些使用 IntPtr Scan0 的本机方法,当 GC 应该移动位图时,我得到一个 System.AccessViolationException。

我找到了以下方法来实现这一点:

  1. 使用 GCHandle: 当我使用 GCHandle 时,我可以分配要固定的内存。我必须自己释放内存。

  2. 使用固定语句: 当我使用 fixed 语句时,我只能使用以下块内的固定对象,在这种情况下这对我来说是不切实际的。

  3. 使用 stackalloc 表达式: 我还没有找到将 stackalloc 与 IntPtr 一起使用的方法

到目前为止我的假设是否正确?

是否有其他方法可以将 IntPtr 固定到内存中?

解决方法

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

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

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