マネージコード: managed code)とは、実行時にメモリ管理型安全性の検証、例外処理などがランタイムによって管理されながら実行されるプログラムコードである。これらは通常、共通言語基盤(CLI)に基づく実行環境上で動作する形式で生成される。

これに対し、ランタイムによる管理を受けず、オペレーティングシステム上で直接実行されるコードは、アンマネージコード(英: unmanaged code)またはネイティブコード(英: native code)と呼ばれる。

マネージコードの実行

編集

マネージコードのプログラムは通常C#VB.NETといった人間が読み書きしやすい言語で書かれ、共通中間言語 (CIL) にコンパイルされる。

コードが実行される際、CILは仮想実行システム (VES) で実行環境(プロセッサアーキテクチャ)に依存した機械語にコンパイルされる。このコンパイルはマネージ実行環境のコンパイラによってなされるので、マネージ実行環境はコードが何をしようとしているのかを完全に知ることができる。故にガベージコレクションフック例外処理型安全性の保証、配列境界のチェックなどを行うことができる。

これは古典的にJITコンパイルと言われる手法である。しかし多くのJITコンパイラと違い、仮想マシンが機械語に変換する擬似機械語が格納されたファイルは環境依存の機械語(x86PowerPCなど)をも含むことができる。これはAppleUniversal Binaryの考えに似ている。

その他の用例

編集

JavaScalaKotlinなどのJava仮想マシン上で動作する言語もまた、中間表現であるJavaバイトコードを出力できる言語であり、管理された安全なコードを記述できるという意味でマネージ言語と呼ばれることもある[1]

脚注

編集

関連項目

編集

📚 Artikel Terkait di Wikipedia

C Sharp

Enum、System.Delegate unmanaged(文脈キーワード) unsafe class MyGenericsClass<T1,T2,T3> where T1 : System.Enum where T2 : System.Delegate where T3 : unmanaged { public MyGenericsClass(T1

C SharpとJavaの比較

(null許容またはnull非許容の参照型)、struct(値型)、new()(デフォルトコンストラクタあり)、notnull(null非許容型)、unmanaged(アンマネージド型)の各制約を指定できる。 // C# class ConstraintClass { } class SomeGenericClass<T>