1

私はグーグルからトピックを読んで、これを理解しています:

  1. Windows ローダーは、.net アプリの exe または dll を読み込みます。
  2. 次に、Windows ローダーはそのプロセスの clr を作成します。
  3. 次に、アプリケーションへのエントリ ポイントを見つけて呼び出します。
  4. しかし、その前に clr のクラス ローダー サービスが来て、Main メソッドを含むクラスをロードします。
  5. そして、jit コンパイルが行われます。
  6. clr は、gc、例外処理、クラスの読み込みなどのサービスをアプリに提供します。

私の質問は次のとおりです。

.net app clr を実行すると、エントリ ポイントが特定され、実行が開始されます。しかし遭遇すると

Class1 ob = new Class1();  

その時、私たちのプロセスはクラスローダと呼ばれる CLR のサービスをどのように呼び出すのでしょうか? 同等の MSIL コードは、newobj が clr のクラス ローダー サービスを内部的に呼び出していますか?

4

1 に答える 1

1

CLR の内部動作を理解するには、多大な努力が必要です。ただし、興味がある場合は、このCLR Internal Workingsを参照してください。

このサイトでは、CLR の動作について広範かつ詳細に説明しています。

具体的には、あなたの答えはサイトの ObjectInstance セクションにあります。

SmallClass obj = new SmallClass();

機能を説明します。

それが役に立てば幸い。

于 2012-11-05T06:48:39.293 に答える