Как привязать указатель к управляемому объекту в С#?

Неуправляемый код вызывает мои функции. В первой функции я должен передать указатель на мой управляемый объект. Иногда позже некоторые из моих других функций вызываются с тем же указателем, что и один из параметров. Я должен разыменовать его и использовать его для выполнения некоторых вычислений, а затем, если он не нужен, избавитесь от него. Чтобы сократить короткую историю, мне нужно связать этот объект, чтобы GC не двигал его, пока я его не избавлюсь. Как это сделать на С#?          Спасибо заранее.

Ответ 1

Чтобы связать объект с С#, вы можете использовать метод GCHandle.Alloc со вторым параметром GCHandleType.Pinned. Объект остается прикрепленным до тех пор, пока экземпляр GCHandle не будет выпущен с использованием метода GCHandle.Free.