非托管代码调用我的函数。在第一个函数中,我应该将指针传递给我的托管对象。有时候稍后我的其他一些函数会被调用与指针之一相同的指针。我应该取消引用它并使用它来执行一些计算,然后如果不需要处理它。 为了缩短故事,我需要固定该对象,以便GC在我处理它之前不会移动它。如何在C#中做到这一点? 提前谢谢。
答案 0 :(得分:10)
要在C#中固定对象,可以使用GCHandle.Alloc
方法和第二个参数GCHandleType.Pinned
。在使用GCHandle
方法释放GCHandle.Free
实例之前,对象仍会固定。