Класс Marshal отвечает за преобразование неуправляемого кода / классов в управляемые классы и наоборот. См. документацию по MSDN класса маршала .
Если вы включили некоторую сборку взаимодействия для доступа к COM-объекту или тому подобное, может случиться так, что маршал (и) не сможет позаботиться об операции. Таким образом, в вашей программе работают квази-неуправляемые части, которые, в свою очередь, могут вызывать такие неприятные вещи, как переполнение буфера и тому подобное. Таким образом, вы покидаете безопасный, удобный мир управляемого кода и вступаете в чертову, опасную область C / C ++ и их страшных братьев. : -)