Когда запускается сборщик мусора .NET, он определяет, какие объекты все еще используются, выполняя анализ достижимости.При поиске указателей на объекты анализируется только управляемая куча, поэтому, если у вас есть указатель от нативного объекта к управляемому объекту, необходимо сообщить сборщику мусора, чтобы он мог включить его в анализ достижимости и, таким образом,обновите указатель, если цель перемещается во время сжатия.
Как сказал rstevens, класс .NET GCHandle
делает это, а C ++ / CLI - это ориентированная на C ++ оболочка для GCHandle
, которая добавляет безопасность типов и удобнасинтаксис.