Разница между нативным и управляемым кодом?

StackOverflow https://stackoverflow.com/questions/855756

  •  21-08-2019
  •  | 
  •  

Вопрос

Например, при просмотре веб-сайта GlowCode profiler на нем написано:

"GlowCode 6.2 и x64 профильный собственный, управляемый и смешанный код на C ++, C #, .NET"

Что они означают?

Это было полезно?

Решение

Машинный код - это код, память которого не "управляется", например, память не освобождается для вас (например, C ++' delete и C's free), нет подсчета ссылок, нет сборки мусора.Управляемый код, как вы уже догадались, - это код, память которого свободна и выделена для вас, сборки мусора и прочих приятностей.

Смешанный код - это когда у вас есть управляемый код, который вызывает неуправляемый уровень.Обычно, когда у вас есть чистая неуправляемая C ++ DLL и вы вызываете ее из .NET с помощью P / invoke.

Другие советы

Машинный код компилируется для работы непосредственно с операционной системой.Управляемый код, однако, предварительно компилируется (байт-код на языке Java), но затем обрабатывается компилятором Just In Time в машинный код во время выполнения.Управляемый код имеет интересный побочный эффект, заключающийся в возможности запуска в разных операционных системах, поскольку машинный код не создается до тех пор, пока виртуальная машина фактически не использует его.Таким образом, вы сможете запускать .NET apps на Windows, а также запускать их на Linux или Mac, на которых установлена среда выполнения Mono.Переносимость в настоящее время не такая чистая, как Java (из-за естественной закрытости архитектуры Microsoft), но концепция остается.

Если вы запускаете неуправляемое приложение, код был скомпилирован для запуска под указанной ОС / оборудованием.Любая переносимость на другую ОС / набор команд теряется и должна быть перекомпилирована для выполнения.

Машинный код написан на "родном" машинном языке компьютера, на котором он запущен, и выполняется непосредственно процессором.

Управляемый код написан на специальном языке, для запуска которого требуется другая программа (т.е.управлять) этим.Эту другую программу часто называют интерпретатором, поскольку она интерпретирует специальный язык.

Программы на C и C ++ являются родными.

Java и C # (и все остальные .СЕТЕВЫЕ языки, если уж на то пошло) управляются.

Управляемый C ++ - это особая форма C ++, которая выполняется в .СЕТЕВОЙ интерпретатор.

Смешанная программа - это программа, которая использует как собственный, так и управляемый код.

Код, который выполняется под управлением среды выполнения common language runtime (CLR), известен как управляемый код.Код, который не выполняется в среде CLR, известен как машинный код.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top