Code that is executed by the .NET common language runtime (CLR). VB.NET code is always managed code but C++ .NET can optionally use unmanaged code. Managed code provides metadata allowing the CLR to manage security (role-based as well as new approaches to code access security). The CLR also handles errors, manages the program stack and finds methods in assembly modules. Managed data is memory that's subject to garbage collection. There are additional restrictions to permit interoperability of different languages, for example, Visual Basic arrays must be zero-based.