The term ‘managed’ is the cause of much confusion. It is used in variousplaces within .NET, meaning slightly different things.
Managed code: The .NET framework provides several core run-time services
to the programs that run within it – for example exception handling and
security. For these services to work, the code must provide a minimum level
of information to the runtime. Such code is called managed code.
Managed data: This is data that is allocated and freed by the .NET runtime’s
garbage collector.
Managed classes: This is usually referred to in the context of Managed
Extensions (ME) for C++. When using ME C++, a class can be marked with
the __gc keyword. As the name suggests, this means that the memory for
instances of the class is managed by the garbage collector, but it also means
more than that. The class becomes a fully paid-up member of the .NET
community with the benefits and restrictions that brings. An example of a
benefit is proper interop with classes written in other languages – for
example, a managed C++ class can inherit from a VB class. An example of a
restriction is that a managed class can only inherit from one base class.