Существует три способа, которыми код C# обычно закрепляет блоки кучи. Вы можете сделать это явно, используя ключевое слово fixed. Это позволяет получить необработанный указатель на место хранения, такое как поле или элемент массива, и компилятор сгенерирует код, который гарантирует, что, пока фиксированный указатель находится в области доступности, блок кучи, на который он ссылается, будет закрепленным. Более распространенным способом закрепления блока является межпрограммное взаимодействие (т. е. вызовы в неуправляемый код, такой как методы в компоненте COM или API ОС). Если вы сделаете вызов API, для которого требуется указатель на что-либо, CLR определит, когда он указывает на блок кучи, и автоматически закрепит этот блок.
Программируем на C# 8.0. Разработка приложений
·
Иэн Гриффитс