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

apa*_*aka 11 c# c++ interop .net-4.0 marshalling

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

Ale*_*x F 10

要在C#中固定对象,可以使用GCHandle.Alloc带有第二个参数的方法GCHandleType.Pinned.对象保持固定,直到GCHandle使用GCHandle.Free方法释放实例.