Закрепленный объект - это объект, который не может быть перемещен сборщиком мусора, а это означает, что его адрес должен быть неизменным, потому что кто-то другой, обычно часть неуправляемого кода, зависит от того, находится ли объект по определенному адресу памяти.
Обычно сборщик мусора может свободно перемещать объекты в памяти.В управляемом коде, поскольку сборщик мусора имеет возможность доступа ко всем ссылкам, он может свободно переназначать объект в другое место, а затем обновлять все ссылки на этот объект, чтобы процесс был прозрачным для выполняющегося кода.Таким образом, GC имеет возможность лучше организовать память программы и при необходимости сжать ее.
Когда неуправляемый объект взаимодействует с вашим кодом (в небезопасных разделах), может возникнуть ситуация, когда существуетуказатель где-то на часть вашего кода - например, на часть памяти, адресованную в вашем коде, которая обрабатывается внешним COM-вызовом.Эта память не может быть переназначена, потому что вызов COM ожидает, что объект находится по заданному адресу, и, таким образом, если бы он был перемещен, GC не мог бы уведомить объект COM об этом изменении, что привело бы к доступунарушение или хуже.