Каким образом. NET CLR различает управляемые указатели от неуправляемых?

Все в конечном итоге JIT превращается в собственный машинный код, так что в конечном итоге у нас есть собственный стек в .NET, который GC должен сканировать на предмет указателей на объекты всякий раз, когда он выполняет сборку мусора.

Теперь, вопрос: как сборщик мусора .NET определяет, является ли указатель на объект внутри кучи GC на самом деле управляемым указателем или случайным целым числом, которое происходит , чтобы иметь значение, соответствующее действительному адресу ?

Очевидно, что если он не может различить эти два, то возможны утечки памяти, поэтому мне интересно, как это работает. Или - осмелюсь сказать - может ли .NET привести к утечке памяти? : O

10
задан Mehrdad 23 February 2011 в 20:00
поделиться