передача поля неуправляемого указателя, содержащегося в управляемом классе, в неуправляемый код - PullRequest
0 голосов
/ 03 июля 2010

У меня есть управляемый класс, который содержит указатель неуправляемого класса:

class Managed { public IntPtr ptr; };

c ++ функция, которая принимает указатель в качестве параметра:

void foo(void *ptr);

Должен ли я прикрепить этот управляемый объект перед вызовом неуправляемой функции?

телефонный код:

Managed obj = new Managed;
foo(obj.ptr);

1 Ответ

2 голосов
/ 03 июля 2010

Я не понимаю, почему вам нужно закрепить его - даже если GC перемещает obj сам, значение obj.ptr не должно изменяться - и obj.ptr передается в ваш код C ++ значение, поэтому код C ++ не может пытаться изменить содержимое obj.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...