[WEBINAR] The New Normal: Dealing with the Reality of an Unsecure World


Definition - What does Unsafe mean?

Unsafe is a C programming language (C#) keyword used to denote a section of code that is not managed by the Common Language Runtime (CLR) of the .NET Framework, or unmanaged code. Unsafe is used in the declaration of a type or member or to specify block code. When used to specify a method, the context of the entire method is unsafe.

Unsafe code provides good interoperability with unmanaged application programming interfaces (API) or system calls and serves as a compatible interface for third-party dynamic link libraries (DLL), which require pointers for parameter passing. Unsafe code also may be used during debugging, when process content requires inspection or analysis.

Techopedia explains Unsafe

Unsafe data refers to allocated memory data that is not controlled by the CLR, such as Windows' handles or pointers allocated via a new method.

Unsafe code refers to a statement or method that accesses unmanaged memory, including:

  • Calls to Windows APIs
  • Calls to Component Object Model (COM) method interface components involving structures with pointers or performance critical code.

Unsafe code is primarily used when operations involve pointers and, generally, when code is executed outside of the managed context. Unsafe code compilation requires specification of the "/unsafe" option with the compilation command.

In fully trusted environments, CLR is required for unsafe code execution. However, CLR does not verify unsafe code. CLR supports unsafe code to provide direct access to unmanaged memory code, which is sometimes preferred for performance reasons.

Because CLR maintains type safety and security, C# does not support pointer arithmetic in managed code, unlike C/C++. The unsafe keyword allows pointer usage in unmanaged code. However, safety is not guaranteed because strict object access rules are not followed. For example, pointer operation capabilities are not provided in Java Runtime Environment (JRE).

Unsafe code can create issues with stability and security, due to its inherent complex syntax and potential for memory related errors, such as stack overflow, accessing and overwriting system memory. Extra developer care is paramount to averting potential errors or security risks.

This definition was written in the context of C#

Techopedia Deals

Connect with us

Techopedia on Linkedin
Techopedia on Linkedin
"Techopedia" on Twitter

Sign up for Techopedia's Free Newsletter!

Email Newsletter

Join thousands of others with our weekly newsletter

Free Whitepaper: The Path to Hybrid Cloud
Free Whitepaper: The Path to Hybrid Cloud:
The Path to Hybrid Cloud: Intelligent Bursting To Amazon Web Services & Microsoft Azure
Free E-Book: Public Cloud Guide
Free E-Book: Public Cloud Guide:
This white paper is for leaders of Operations, Engineering, or Infrastructure teams who are creating or executing an IT roadmap.
Free Tool: Virtual Health Monitor
Free Tool: Virtual Health Monitor:
Virtual Health Monitor is a free virtualization monitoring and reporting tool for VMware, Hyper-V, RHEV, and XenServer environments.
Free 30 Day Trial – Turbonomic
Free 30 Day Trial – Turbonomic:
Turbonomic delivers an autonomic platform where virtual and cloud environments self-manage in real-time to assure application performance.