What is managed or unmanaged code in programming?

This is a good article about the subject.

To summarize,

  1. Managed code is not compiled to machine code but to an intermediate language which is interpreted and executed by some service on a machine and is therefore operating within a (hopefully!) secure framework which handles dangerous things like memory and threads for you. In modern usage this frequently means .NET but does not have to.

An application program that is executed within a runtime engine
installed in the same machine. The application cannot run without it.
The runtime environment provides the general library of software
routines that the program uses and typically performs memory
management. It may also provide just-in-time (JIT) conversion from
source code to executable code or from an intermediate language to
executable code. Java, Visual Basic and .NET’s Common Language Runtime
(CLR) are examples of runtime engines. (Read more)

  1. Unmanaged code is compiled to machine code and therefore executed by the OS directly. It therefore has the ability to do damaging/powerful things Managed code does not. This is how everything used to work, so typically it’s associated with old stuff like .dlls.

An executable program that runs by itself. Launched from the operating
system, the program calls upon and uses the software routines in the
operating system, but does not require another software system to be
used. Assembly language programs that have been assembled into machine
language and C/C++ programs compiled into machine language for a
particular platform are examples of unmanaged code.(Read more)

  1. Native code is often synonymous with Unmanaged, but is not identical.

Leave a Comment