Разница между нативным и управляемым кодом?
Вопрос
Например, при просмотре веб-сайта 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, известен как машинный код.