アンマネージドコード
アンマネージドコード (英語:unmanaged code)とは、.NET Frameworkの共通言語基盤(CLI)で実行されるプログラムのうち、CLIで管理されないものをいう。
概要
アンマネージドコードはCLIの外側で実行されるプログラム、いわゆるネイティブコードとイコールと思われがちだが、アンマネージドコードにはネイティブコードに加え、CLIで実行されるプログラムだがCLIのオーバーフローのチェックなど(安全装置)を外したものも含まれる。
.NET FrameworkではP/Invokeを用いてマネージドコードからネイティブコードを呼び出すことができるが、このネイティブコード部分はアンマネージドコードとなる。
また、.NET Frameworkでは、データ型のチェック機構などの実行時の安全性を向上させる機能が満載されているが、それらを無効化にした場合もアンマネージドコードである。たとえばC#でunsafeキーワードやfixedキーワードを用いて、C言語ばりにポインタ変数をもちいたり、一般的なヒープ領域に動的配列を確保するのではなく、スタック領域に静的配列を確保したりした場合などがこれにあたる。