[解決済み] マネージド」と「アンマネージド」の違いについて
質問
.NETについて話しているときに時々耳にしたり読んだりするのですが、例えば"マネージドコード"と"アンマネージドコード"が何であるか、そしてそれらの違いは何であるかが全く分かりません。定義上、何が違うのでしょうか?どちらかを使用すると、どのような結果になるのでしょうか?この区別は.NET/Windowsにのみ存在するのでしょうか?
どのように解決するのですか?
管理されたコード
マネージドコードは、Visual Basic .NET と C# コンパイラが作成するものです。これは CLR (Common Language Runtime) 上で実行され、特にガベージ コレクション、ランタイム型チェック、参照チェックなどのサービスを提供します。つまり、"私のコードは次のようなものだと考えてください。 管理されている CLRによって管理されている、と考えてください。
Visual BasicとC#は だけ したがって、これらの言語のいずれかでアプリケーションを記述している場合、CLR によって管理されるアプリケーションを記述していることになります。Visual C++ .NET でアプリケーションを記述している場合、必要に応じてマネージド コードを生成することができますが、それは任意です。
アンマネージ コード
アンマネージドコードは、機械語にそのままコンパイルされます。つまり、その定義によれば、従来の C/C++ コンパイラでコンパイルされたすべてのコードは「アンマネージドコード」です。また、中間言語ではなくマシン コードにコンパイルされるため、非移植型です。
CLR が提供する自由なメモリ管理やその他のものはありません。
Visual Basic や C# ではアンマネージコードを作成できないため、Visual Studio ではアンマネージコードはすべて C/C++ で記述されます。
2つの混合
Visual C++ はマネージ コードまたはアンマネージ コードのいずれかにコンパイルできるので、同じアプリケーションで 2 つを混在させることが可能です。これは 2 つの間の境界をあいまいにし、定義を複雑にしますが、たとえば、ひどく書かれたアンマネージ コードでサード パーティのライブラリを使用している場合、まだメモリ リークが発生する可能性があることを知っておくだけでも言及する価値があります。
以下は、私が以下の方法で見つけた例です。 ググる :
#using <mscorlib.dll>
using namespace System;
#include "stdio.h"
void ManagedFunction()
{
printf("Hello, I'm managed in this section\n");
}
#pragma unmanaged
UnmanagedFunction()
{
printf("Hello, I am unmanaged through the wonder of IJW!\n");
ManagedFunction();
}
#pragma managed
int main()
{
UnmanagedFunction();
return 0;
}
関連
-
[解決済み] このコンピュータには、.NET Framework 4.6またはそれ以降の更新プログラムがすでにインストールされています。
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] .NET Coreと.NET Standard Class Libraryのプロジェクトタイプの違いは何ですか?
-
[解決済み] .NETにおけるstructとclassの違いは何ですか?
-
[解決済み] CygwinとMinGWの違いは何ですか?
-
[解決済み] Visual Studioの「Any CPU」ターゲットはどういう意味ですか?
-
[解決済み] PowerShellで文字列がNULLまたは空であるかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンパイラーエラーメッセージ。コンパイラはエラーコード -532462766 で失敗しました。
-
[解決済み] msiexec を使用せずにコマンドラインから MSI ファイルをアンインストールする
-
[解決済み] WPFで角丸ボタンを作成する/作るには?
-
[解決済み] 到達不能なホストに対してソケット操作を行おうとした
-
[解決済み] VB.NETでファイル名を一意のサフィックスに変更するには?
-
[解決済み] "SSL/TLSセキュアチャネルの信頼関係を当局と確立できませんでした "の解決方法
-
[解決済み] AssemblyVersion、AssemblyFileVersion、AssemblyInformationalVersionの違いは何ですか?
-
[解決済み] Entity FrameworkとLINQ to SQLの比較
-
[解決済み] .NETで文字列から発音区分符号(アクセント)を削除するにはどうすればよいですか?
-
[解決済み] プログラミングにおけるマネージドコード、アンマネージドコードとは何ですか?