Managed and Unmanaged Code in .NET
Last Updated :
31 Jan, 2025
In .NET, the terms "Managed Code" and "Unmanaged Code" refer to how the code is executed and managed by the system. Managed code runs under the control of the CLR(Common Language Runtime), while unmanaged code runs directly on the operating system. Each type of code has its own advantages and is used for different purposes. This article explains both types of code, their differences, and their advantages and disadvantages.
Managed Code
Managed code is code that runs within the Common Language Runtime (CLR) in the .NET environment. When we write code in languages like C#, VB.NET, or F#, it is compiled into Intermediate Language (IL). This IL code is executed by the CLR, which provides services such as garbage collection, exception handling, and memory management.
The CLR ensures that the code is executed safely and efficiently by managing tasks like memory allocation and error checking automatically and enables the developer from having to handle these low-level details. The code is then compiled into native machine code by the Just In Time Compiler compiler at runtime, making it platform-independent.
Flow Diagram:
The managed code also provides platform independence because when the managed code compiled into the intermediate language, then the JIT compiler compiles this intermediate language in the architecture specific instruction.
Advantages
- It improves the security of the application like when you use runtime environment, it automatically checks the memory buffers to guard against buffer overflow.
- It implement the garbage collection automatically.
- It also provides runtime type checking/dynamic type checking.
- It also provides reference checking which means it checks whether the reference point to the valid object or not and also check they are not duplicate.
Disadvantages
- The main disadvantage of managed language is that you are not allowed to allocate memory directly, or you cannot get the low-level access of the CPU architecture.
Unmanaged Code
Unmanaged code is code that runs directly on the operating system without the intervention of the CLR. Languages like C, C++, and older versions of VB produce unmanaged code. The code is compiled directly into native machine code and specific to the hardware architecture.
Unmanaged code gives developers more control over system resources, such as memory and hardware. But this also means that the programmer is responsible for handling tasks like memory management and error handling, which can lead to issues like memory leaks and buffer overflows if not handled properly.
Flow Diagram:
Advantages
- It provides the low-level access to the programmer.
- It also provides direct access to the hardware.
- It allows the programmer to bypass some parameters and restriction that are used by the managed code framework.
Disadvantages
- It does not provide security to the application.
- Due to the access to memory allocation the issues related to memory occur like memory buffer overflow, etc.
- Error and exceptions are also handled by the programmer.
- It does not focus on garbage collection.
To know the difference more, refer to this article: Difference Between Managed and Unmanaged Code in .NET
Similar Reads
Difference between Managed and Unmanaged code in .NET Managed code is the code which is managed by the CLR(Common Language Runtime) in .NET Framework. Whereas the Unmanaged code is the code which is directly executed by the operating system. Below are some important differences between the Managed code and Unmanaged code: Managed CodeUnmanaged CodeIt i
2 min read
Unsafe Code in C# Unsafe code in C# is the part of the program that runs outside the control of the Common Language Runtime (CLR) of the .NET frameworks. The CLR is responsible for all of the background tasks that the programmer doesn't have to worry about like memory allocation and release, managing stack etc. Using
2 min read
Common Language Runtime (CLR) in C# The Common Language Runtime (CLR) is a component of the Microsoft .NET Framework that manages the execution of .NET applications. It is responsible for loading and executing the code written in various .NET programming languages, including C#, VB.NET, F#, and others.When a C# program is compiled, th
4 min read
How C# Code Gets Compiled and Executed? C# is a general-purpose, strongly typed, lexically scoped, functional, object-oriented, and component-oriented programming language. In this article, we are going to learn how C# code gets compiled and executed. Step-by-step process of C# code compilation: Step 1: Write a C# code. Step 2: Compile th
4 min read
Differences Between .NET Core and .NET Framework .NET Core is a free open source, a general-purpose development platform for developing modern cloud-based software applications on Windows, Linux, and macOS operating systems. It operates across several platforms and has been revamped to make .NET fast, scalable, and modern. .NET Core is one of Micr
4 min read