C# GCHandle.Free()是否只是释放句柄?
为了确保这一点,假设我在这个固定数组上有固定字节数组和GCHandleC# GCHandle.Free()是否只是释放句柄?,c#,.net,garbage-collection,C#,.net,Garbage Collection,为了确保这一点,假设我在这个固定数组上有固定字节数组和GCHandle 调用GCHandle.Free()方法时,它是否只是释放句柄并将原始字节数组的管理交还给GC,因此,如果存在对该数组的活动引用,它还不会被释放?你说得对GCHandle只是同一对象的另一个句柄,只要您至少有一个句柄,您的对象就不会被释放 但是,您可以使用Weak类型分配GCHandle,如果您的GCHandle是唯一指向您的对象,则允许GC收集您的对象(如果您也有“正常”引用,则不会发生任何错误)。是 当句柄超出范围时,必须
调用GCHandle.Free()方法时,它是否只是释放句柄并将原始字节数组的管理交还给GC,因此,如果存在对该数组的活动引用,它还不会被释放?你说得对
GCHandle
只是同一对象的另一个句柄,只要您至少有一个句柄,您的对象就不会被释放
但是,您可以使用Weak
类型分配GCHandle
,如果您的GCHandle
是唯一指向您的对象,则允许GC收集您的对象(如果您也有“正常”引用,则不会发生任何错误)。是
当句柄超出范围时,必须通过调用Free方法显式释放它;否则,可能会发生内存泄漏。释放固定句柄时,如果没有其他引用,关联对象将被取消固定,并将符合垃圾收集的条件
--