Code that is managed is code that is running under the auspices of the Common Language Runtime (CLR). The term managed most notably refers to memory that is utilized by the application. With unmanaged code written using C/C++ or even Visual Basic and VBA, the programmer is responsible for releasing memory when it is no longer needed. In VBA, you do that by setting an object to Nothing. In C++, you do it by deleting a pointer and setting its memory address to NULL.
Managed code uses a process called garbage collection that does this cleanup for you. In both Visual Basic and Visual C#, objects that you create are tracked by the garbage collector. When the garbage collector determines that an object is no longer needed, the object's resources are automatically freed.
In addition, the CLR provides a common type system (CTS), and code-access security (CAS). Furthermore, because managed code runs through the CLR, it is possible to mix and match languages in a given project. If you want to write your UI using Visual Basic for its RAD capabilities, but write middle-tier objects using C# for its ability to use pointers and some lower-level constructs, the runtime enables you to do this. Want to call a C# class library from a managed C++ application? No problem.
However, it is important to realize that managed code is not immediately compiled. Code written using Visual C# or Visual Basic is actually compiled to intermediate language (IL). This code ...