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