只是为了确保,因为我在这个固定数组上固定了字节数组和GCHandle。
当调用GCHandle.Free()方法时,它是否只是释放句柄并将原始字节数组的管理交还给GC,因此如果存在对该数组的活动引用,它将不会刚刚处理好了?
答案 0 :(得分:5)
你是对的。 GCHandle
只是同一个对象的另一个句柄,只要你有至少一个,你的对象就不会被处理掉。
但是,您可以使用GCHandle
类型分配Weak
,如果GCHandle
是唯一指向它的{{1}}(如果您有'正常'),则GC会收集您的对象参考,也不会发生任何不好的事情。)
答案 1 :(得分:3)
是
当句柄超出范围时,您必须通过调用Free方法显式释放它;否则,可能会发生内存泄漏。释放固定句柄时,如果没有其他引用,则关联对象将被取消固定,并且有资格进行垃圾收集。