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
C# Tutorial C# (pronounced "C-sharp") is a modern, versatile, object-oriented programming language developed by Microsoft in 2000 that runs on the .NET Framework. Whether you're creating Windows applications, diving into Unity game development, or working on enterprise solutions, C# is one of the top choices fo
4 min read
Introduction to .NET Framework The .NET Framework is a software development framework developed by Microsoft that provides a runtime environment and a set of libraries and tools for building and running applications on Windows operating systems. The .NET framework is primarily used on Windows, while .NET Core (which evolved into
6 min read
C# Interview Questions and Answers C# is the most popular general-purpose programming language and was developed by Microsoft in 2000, renowned for its robustness, flexibility, and extensive application range. It is simple and has an object-oriented programming concept that can be used for creating different types of applications.Her
15+ min read
C# Dictionary Dictionary in C# is a generic collection that stores key-value pairs. The working of Dictionary is quite similar to the non-generic hashtable. The advantage of a Dictionary is, that it is a generic type. A dictionary is defined under System.Collections.Generic namespace. It is dynamic in nature mean
5 min read
C# List Class In C#, the List<T> class represents the list of objects that can be accessed by index. It comes under the System.Collections.Generic namespace. List class can be used to create a collection of different types like integers, strings, etc. List<T> class also provides the methods to search,
7 min read
C# Delegates A delegate is an object which refers to a method or you can say it is a reference type variable that can hold a reference to the methods. It provides a way which tells which method is to be called when an event is triggered. For example, if you click on a Button on a form (Windows Form application),
6 min read
ASP.NET Interview Questions and Answer ASP.NET is a popular framework by Microsoft for building fast and scalable web applications. It allows developers to create dynamic websites, services, and apps, using server-side code and offering a user-friendly experience. Trusted by companies like Microsoft, Dell, and Accenture, ASP.NET is used
15+ min read
C# .NET Framework (Basic Architecture and Component Stack) C# (C-Sharp) is a modern, object-oriented programming language developed by Microsoft in 2000. It is a part of the .NET ecosystem and is widely used for building desktop, web, mobile, cloud, and enterprise applications. This is originally tied to the .NET Framework, C# has evolved to be the primary
6 min read
C# Data Types Data types specify the type of data that a valid C# variable can hold. C# is a strongly typed programming language because in C# each type of data (such as integer, character, float, and so forth) is predefined as part of the programming language and all constants or variables defined for a given pr
7 min read
C# Arrays An array is a group of like-typed variables that are referred to by a common name. And each data item is called an element of the array. The data types of the elements may be any valid data type like char, int, float, etc. and the elements are stored in a contiguous location. Length of the array spe
8 min read