Что такое управляемый или неуправляемый код в программировании? - PullRequest
137 голосов
/ 02 декабря 2008

Я использую определенную команду в моем коде C #, которая работает хорошо. Однако в «неуправляемом» коде он ведет себя неправильно.

Что такое управляемый или неуправляемый код?

Ответы [ 13 ]

1 голос
/ 24 июля 2013

Управляемый код: - код, форма MSIL (промежуточный язык) которого разрабатывается после компиляции языкового компилятора и непосредственно выполняется CLR, называемым управляемым кодом. Например: - Весь код на 61 языке, поддерживаемый .net framework

Неуправляемый код: - код, разработанный до .net, для которого форма MSIL недоступна и выполняется CLR напрямую, а CLR перенаправит в операционную систему, которая называется неуправляемым кодом.

например: -COM, Win32 APIs

0 голосов
/ 11 апреля 2016

Из Pro C # 5 и .NET 4.5 Framework:

Управляемый или неуправляемый код: Возможно, самый важный момент, который нужно понять о языке C #, это то, что он может создавать код может выполняться только в среде выполнения .NET (вы никогда не сможете использовать C # для создания собственного COM-сервера или неуправляемое приложение C / C ++). Официально термин, используемый для описания кода, нацеленного на .NET Runtime - это управляемый код. Двоичный модуль, содержащий управляемый код, называется сборкой. (подробнее о сборках чуть чуть). И наоборот, код, который не может быть непосредственно размещен в .NET среда выполнения называется неуправляемым кодом.

0 голосов
/ 24 августа 2015

Прежде всего, поймите это, прежде чем .NET framework, Microsoft предоставляли автономные продукты, такие как MFC (Visual C++), VB, FoxPro и т. Д.

В 2002 году Microsoft объединила свои продукты и создала .NET Framework. Теперь есть разница между тем, как код выполнялся раньше, и тем, как код управляется и выполняется в .NET Framework. Microsoft представила концепцию CLR с платформой .NET, которая компилирует код, поступающий из любого поддерживаемого языка .NET Framework, и предоставляет дополнительные функции, такие как memory mangement, garbage collection и т. Д. Но такие функции CLR ранее не были доступны напрямую.

Так что, если вы создаете библиотеку / код в .NET Framework (скомпилировано с CLR), то это называется Managed code. Вы можете использовать эту библиотеку далее в другом .NET приложении / проекте, и там тоже, CLR будет понять, как он был скомпилирован раньше, и поэтому он остается вашим управляйте кодом.

OTOH, если вы хотите использовать библиотеки, которые были написаны до .NET Framework, вы можете сделать это с некоторыми ограничениями, но помните, поскольку CLR там не было в то время, поэтому сейчас CLR не будет понимать и компилировать этот код снова И это будет называться unmanaged code. Обратите внимание, что библиотеки / сборки, созданные какой-либо третьей стороной для предоставления определенных функций / инструментов, также могут рассматриваться как неуправляемый код, если он не совместим с CLR.

С точки зрения непрофессионалов, Управление кодом - это то, что ваш CLR понимает и может скомпилировать самостоятельно для дальнейшего выполнения. В .NET Framework (с любого языка, который работает на .NET Framework) Когда код переходит в CLR, код предоставляет некоторую информацию метаданных, так что CLR может предоставить вам функции, указанные здесь . Немногие из них Garbage collection, Performance improvements, cross-language integration, memory management и т. Д.

OTOH, неуправляемый код является чем-то специфичным для машины и готов к использованию, нет необходимости обрабатывать его дальше.

...