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

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

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