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