Różnica między kodem natywnym a zarządzanym?

Na przykład, patrząc na stronę GlowCode profiler mówi:

Dzięki temu, że nie jest on w stanie sprostać wymaganiom użytkowników, nie jest on w stanie sprostać nawet najbardziej wymagającym wymaganiom.]}

Co to znaczy?

Author: Joel, 2009-05-13

4 answers

Natywny kod to kod, którego pamięć nie jest "zarządzana", ponieważ pamięć nie jest wolna dla Ciebie (na przykład C++' delete i C ' free), bez zliczania referencji, bez zbierania śmieci. Zarządzany kod, zgadłeś, to kod, którego pamięć jest wolna i przydzielona dla Ciebie, zbieranie śmieci i inne gadżety.

Kod mieszany jest wtedy, gdy zarządzasz kodem, który wywołuje niezarządzaną warstwę. Zwykle, gdy masz czysty niezarządzany C++ DLL i wywołasz go z. NET za pomocą P / invoke.

 67
Author: Anzurio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-13 02:23:01

Natywny kod jest kompilowany do pracy bezpośrednio z systemem operacyjnym. Zarządzany kod jest jednak wstępnie skompilowany (kod bajtowy w języku Java-speak), ale jest następnie przetwarzany przez kompilator Just In Time do kodu natywnego w czasie wykonywania. Kod zarządzany ma interesujący efekt uboczny polegający na możliwości uruchamiania na różnych systemach operacyjnych, ponieważ kod maszynowy nie jest tworzony, dopóki maszyna wirtualna go nie użyje. W ten sposób możesz uruchamiać aplikacje. NET w systemie Windows, a także uruchamiać je na Linuksie lub Macu, które mają tryb mono runtime zainstalowany. Przenośność nie jest obecnie tak czysta jak Java (ze względu na naturalnie zamkniętą architekturę Microsoftu), ale koncepcja pozostaje.

Jeśli używasz niezarządzanej aplikacji, kod został skompilowany tak, aby działał dla wyznaczonego systemu operacyjnego/sprzętu. Dowolna przenośność do innego systemu operacyjnego / zestawu instrukcji jest tracona i musi zostać przekompilowana do wykonania.

 41
Author: Wayne Hartman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-13 02:33:41

Natywny kod jest napisany w "natywnym" języku maszynowym komputera, na którym jest uruchomiony i jest wykonywany bezpośrednio przez procesor.

Zarządzany kod jest napisany w specjalnym języku, który wymaga innego programu do jego uruchomienia (np. zarządzania). Ten drugi program jest często nazywany interpreterem, ponieważ interpretuje specjalny język.

Programy C i C++ są natywne.

Java i C# (i wszystkie języki. NET w tym zakresie) są zarządzane.

Managed C++ is a specjalna forma C++, która działa w interpreterze. NET.

Program mieszany to program, który używa kodu, który jest zarówno natywny, jak i zarządzany.

 26
Author: onedozenbagels,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-13 22:27:28

Kod uruchamiany pod kontrolą środowiska uruchomieniowego common language runtime (CLR) jest znany jako kod zarządzany. Kod, który nie działa pod CLR jest znany jako kod natywny.

 5
Author: Hanu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-10 13:03:35