Introduction to Microsoft .NET Security

Prior to .NET, developers wrote programs in languages such as C or C++, in which the source code is compiled directly to machine code for a particular computer architecture. This is called unmanaged code because memory management, type checking, and security aren't built in. The code must manage such issues on its own, and the environment in which unmanaged code runs is simply the operating system (OS) itself.