Open In App

Managed and Unmanaged Code in .NET

Last Updated : 31 Jan, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

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:

Managed-Code-in-dot-net

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:

Unmanaged-Code-in-dot-net

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



Next Article
Article Tags :

Similar Reads

  翻译: