如何在C#中固定指向托管对象的指针?

时间:2011-07-31 12:57:15

标签: c# c++ .net-4.0 interop marshalling

非托管代码调用我的函数。在第一个函数中,我应该将指针传递给我的托管对象。有时候稍后我的其他一些函数会被调用与指针之一相同的指针。我应该取消引用它并使用它来执行一些计算,然后如果不需要处理它。 为了缩短故事,我需要固定该对象,以便GC在我处理它之前不会移动它。如何在C#中做到这一点?            提前谢谢。

1 个答案:

答案 0 :(得分:10)

要在C#中固定对象,可以使用GCHandle.Alloc方法和第二个参数GCHandleType.Pinned。在使用GCHandle方法释放GCHandle.Free实例之前,对象仍会固定。