Von annakata Antwort: (hoffentlich!)
Managed Code nicht in Maschinencode kompiliert wird, sondern in eine Zwischensprache, die auf einer Maschine von einigen Service interpretiert und ausgeführt wird und daher innerhalb eines Betriebs sicheres Framework, das gefährliche Dinge wie Speicher und Threads für Sie behandelt. Im modernen Sprachgebrauch bedeutet das häufig .NET, muss aber nicht .
Nicht verwalteter Code wird zum Maschinencode kompiliert und daher vom Betriebssystem direkt ausgeführt. Es hat daher die Fähigkeit zu tun schädigende/mächtige Dinge verwalteter Code nicht. Dies ist, wie alles gearbeitet hat, so ist es normalerweise mit alten Sachen verbunden sind wie .dlls
Nun, was unter der Haube vor sich geht? Verwaltet vs nicht verwaltet ist alles über Speicher.
In verwaltetem Code manipuliert der Code den Speicher nicht direkt. Es gibt Anweisungen für eine Laufzeit, die es im Namen des Codes ausführt. Auf diese Weise können unsichere oder illegale Operationen blockiert werden und der Code arbeitet in einer Semi-Sandbox. Verwaltete Sprachen können und haben oft nicht verwalteten Code - das ist die Art der Datenverarbeitung.
Visualisieren Sie Speicher wie ein riesiger Parkplatz. Der Unterschied zwischen einer verwalteten und einer nicht verwalteten Sprache ist wie folgt:
In einer verwalteten Sprache gehen Sie zu dem Valet und erklären, dass Sie 10 Autos geparkt haben möchten. Sie wissen nicht genau wo sie geparkt sind, aber Sie wissen, dass der Kammerdiener sie gerne für Sie zurückholen wird, wann immer Sie wollen. Sie kommen auch nicht zu entscheiden, wo sie geparkt sind - Sie müssen nur den Kammerdiener sagen, dass sie geparkt werden müssen.
In einer nicht verwalteten Sprache ist es Ihre Aufgabe, die Spots auszuwählen. Sie könnten in andere Autos fahren, in Behindertenplätze parken, was auch immer - das gibt Ihnen bessere Leistung (Sie müssen nicht ständig Anweisungen an einen Diener weitergeben) aber können Sie auch viele dumme/gefährliche Fehler machen.
Es geht nur um die Garbage-Collection. Was den verwalteten Code auszeichnet, ist, dass der GC Objektverweise finden kann, die der Code verwendet. Der Just-in-Time-Compiler spielt in diesem Schema eine entscheidende Rolle. Er kompiliert MSIL nicht nur zu Maschinencode (wie ein C-Compiler mit C-Code), sondern generiert auch eine Tabelle, die dem GC mitteilt, wo er nach dem Objekt suchen soll Verweise. Diese Tabelle ist der Unterschied, nicht verwalteter Code kann diese Tabelle nicht bereitstellen. –