C++マネージ拡張
C++マネージ拡張 (Managed Extensions for C++, Managed C++) は、C++で.NET Frameworkアプリケーションを記述するための、マイクロソフトによるC++の拡張である。これによって、C++でネイティブコードだけでなく共通言語ランタイム (CLR) に向けたアプリケーションを記述することができる。
この拡張は、2002年にリリースされたVisual Studio .NETに含まれるVisual C++ .NETとともに登場した。2005年後半にリリースされたVisual Studio 2005では大きく改定され、C++/CLIという独立した言語になった。C++/CLIでは構文が明確化・単純化され、ジェネリクスなどの新しい機能をサポートするよう拡張された。「C++マネージ拡張」という言葉はC++/CLIより前の古い拡張を指す。
「マネージ (Manage)」とは、.NET仮想マシンによって管理されながら動作するという意味である。これによりバッファオーバーランチェックなどといった実行時チェックを行うことができ、サンドボックスとして機能するためセキュリティが向上する。マネージドC++で記述されたアプリケーションは通常のC++アプリケーションのようにネイティブコードにコンパイルされるのではなく、共通中間言語 (CIL) と呼ばれる中間言語にコンパイルされる。
マネージド (Managed) C++のコードはガベージコレクタなどのCLRの機能を利用することができ、C#やVB.NETなどといった.NET言語と相互運用をすることができる。Managed C++は.NET言語の中でも特殊な存在であり、.NETとネイティブC++の両方に直接的なアクセスができる唯一の言語である。一般の.NET言語はP/InvokeやCOMを通してC++コードとやりとりする必要がある。このため、マネージドC++はしばしばマネージコードとアンマネージコードの橋渡しとして利用されることがある。
関連項目