1

C# では、静的変数がメモリ内に作成され、AppDomain が存続する限り存続することを理解しています。静的メソッドはメモリ内でどのように処理されますか? メソッドは変数のようなスタック/ヒープ上に作成されますか? メソッドGCのようなものはありますか?これはコール スタックとどのように関連していますか?

4

2 に答える 2

3

メソッドは、ヒープやスタックではなく、コード セグメントに存在します。コードはメモリに読み込まれるだけで、AppDomain が存在する限りそこにとどまります。

静的メソッドと非仮想メソッドにはアドレスだけがあり、コードはメソッドを呼び出すときにアドレスを直接使用します。

仮想メソッドにもアドレスがありますが、直接は使用されません。クラスに関連付けられている仮想メソッド テーブルにはメソッドへのポインターがあるため、コードはテーブルからポインターを取得してメソッドを見つけます。

コール スタックは、スタックの別の用語です。

于 2012-06-08T22:43:17.793 に答える
0

メソッドはヒープ上にあるのではなく、コードの一部です。つまり、静的メソッドまたはインスタンス メソッドです。

于 2012-06-08T22:41:05.073 に答える