Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GCHandle.Free()是否只是释放句柄?_C#_.net_Garbage Collection - Fatal编程技术网

C# GCHandle.Free()是否只是释放句柄?

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

为了确保这一点,假设我在这个固定数组上有固定字节数组和GCHandle


调用GCHandle.Free()方法时,它是否只是释放句柄并将原始字节数组的管理交还给GC,因此,如果存在对该数组的活动引用,它还不会被释放?

你说得对
GCHandle
只是同一对象的另一个句柄,只要您至少有一个句柄,您的对象就不会被释放

但是,您可以使用
Weak
类型分配
GCHandle
,如果您的
GCHandle
是唯一指向您的对象,则允许GC收集您的对象(如果您也有“正常”引用,则不会发生任何错误)。

当句柄超出范围时,必须通过调用Free方法显式释放它;否则,可能会发生内存泄漏。释放固定句柄时,如果没有其他引用,关联对象将被取消固定,并将符合垃圾收集的条件

--