「アンマネージドコード」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
(ページの作成:「'''アンマネージドコード''' (unmanaged code)とは、.NET Framework共通言語基盤CLI)で実行されるプログラム([[マ...」)
 
 
1行目: 1行目:
'''アンマネージドコード''' (unmanaged code)とは、[[.NET Framework]]の[[共通言語基盤]]([[CLI]])で実行される[[プログラム]]([[マネージドコード]])のうち、CLIで管理されないものをいう。
+
'''アンマネージドコード''' ([[英語]]:unmanaged code)とは、[[.NET Framework]]の[[共通言語基盤]]([[CLI]])で実行される[[プログラム]]のうち、CLIで管理されないものをいう。
  
[[CLI]]の外側で実行される[[プログラム]][[ネイティブコード]])とイコールと思われがちだが、アンマネージドコードにはネイティブコードに加え、[[CLI]]で実行されるプログラムだが[[CLI]]の制限(安全装置)を外したものも含まれる。
+
==概要==
 +
アンマネージドコードは[[CLI]]の外側で実行される[[プログラム]]、いわゆる[[ネイティブコード]]とイコールと思われがちだが、アンマネージドコードにはネイティブコードに加え、[[CLI]]で実行されるプログラムだが[[CLI]]の[[オーバーフロー]]のチェックなど(安全装置)を外したものも含まれる。
  
[[.NET Framework]]では、[[P/Invoke]]を用いて[[マネージドコード]]から[[ネイティブコード]]を呼び出すことができるが、このネイティブコード部分はアンマネージドコードとなる。
+
[[.NET Framework]]では[[P/Invoke]]を用いて[[マネージドコード]]から[[ネイティブコード]]を呼び出すことができるが、このネイティブコード部分はアンマネージドコードとなる。
  
 
また、[[.NET Framework]]では、[[データ型]]のチェック機構などの実行時の安全性を向上させる機能が満載されているが、それらを無効化にした場合もアンマネージドコードである。たとえば[[C Sharp|C#]]で[[C Sharp/unsafeキーワード|unsafeキーワード]]や[[C Sharp/fixedキーワード|fixedキーワード]]を用いて、[[C言語]]ばりに[[ポインタ変数]]をもちいたり、一般的な[[ヒープ領域]]に[[動的配列]]を確保するのではなく、[[スタック領域]]に[[静的配列]]を確保したりした場合などがこれにあたる。
 
また、[[.NET Framework]]では、[[データ型]]のチェック機構などの実行時の安全性を向上させる機能が満載されているが、それらを無効化にした場合もアンマネージドコードである。たとえば[[C Sharp|C#]]で[[C Sharp/unsafeキーワード|unsafeキーワード]]や[[C Sharp/fixedキーワード|fixedキーワード]]を用いて、[[C言語]]ばりに[[ポインタ変数]]をもちいたり、一般的な[[ヒープ領域]]に[[動的配列]]を確保するのではなく、[[スタック領域]]に[[静的配列]]を確保したりした場合などがこれにあたる。
13行目: 14行目:
  
 
== 参考文献 ==
 
== 参考文献 ==
<references/>
+
{{reflist}}
 
 
== 外部リンク ==
 
  
 
{{stub}}
 
{{stub}}

2015年10月18日 (日) 18:04時点における最新版

アンマネージドコード英語:unmanaged code)とは、.NET Framework共通言語基盤CLI)で実行されるプログラムのうち、CLIで管理されないものをいう。

概要[編集 | ソースを編集]

アンマネージドコードはCLIの外側で実行されるプログラム、いわゆるネイティブコードとイコールと思われがちだが、アンマネージドコードにはネイティブコードに加え、CLIで実行されるプログラムだがCLIオーバーフローのチェックなど(安全装置)を外したものも含まれる。

.NET FrameworkではP/Invokeを用いてマネージドコードからネイティブコードを呼び出すことができるが、このネイティブコード部分はアンマネージドコードとなる。

また、.NET Frameworkでは、データ型のチェック機構などの実行時の安全性を向上させる機能が満載されているが、それらを無効化にした場合もアンマネージドコードである。たとえばC#unsafeキーワードfixedキーワードを用いて、C言語ばりにポインタ変数をもちいたり、一般的なヒープ領域動的配列を確保するのではなく、スタック領域静的配列を確保したりした場合などがこれにあたる。

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]