Нативные и дескрипторные указатели в C ++ CLI - PullRequest
1 голос
/ 20 января 2012

Мне было интересно, есть ли какой-нибудь способ, которым нативный указатель может указывать на управляемую кучу? Я знаю, что это было бы опасно, учитывая сжатие кучи и циклы GC, изменяющие адрес объекта, но возможно ли это все еще? Пример будет оценен.

Кроме того, правда ли, что дескриптор (^) вообще не может указывать на собственную кучу?

Спасибо.

1 Ответ

5 голосов
/ 20 января 2012

Да, это поддерживается, но объект, на который указывают, должен быть закреплен .Вы делаете это с помощью .NET GCHandle :: Alloc () или с помощью класса C ++ / CLI pin_ptr<>.Плохое закрепление объектов - это плохо, они мешают сборщику мусора, так как он должен обходить камень в дороге.Закрепление очень распространено при вызове собственного кода.

Отслеживание ссылки (шляпа) на блок в собственной куче не имеет смысла, они только отслеживают объекты в куче, собираемой мусором.

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