0

パブリック クラス内で次のような静的キューを宣言すると、次のようになります。

public class c
{
  private string[] s={"a","b","c"};
  private static Queue<string> q = new Queue<string>(s);

  static private void SomeMethod()
  {
     private string[] s2 = {"123","345"};
     // somewhere in here I reassign the queue q = new Queue<string>(s2);
  }
}

私のアクションは C# でメモリ リークを引き起こしますか? ガベージ コレクションは未使用の可能性のあるメモリを要求しますか?

4

4 に答える 4

8

いいえ、漏れの原因となるものは何もありません。

参照したオブジェクトがqどこにも参照されなくなると、適切にガベージ コレクションが行われます。

于 2012-09-11T15:45:59.810 に答える
6

メモリリークを引き起こすべきではありません。元のキューは、ガベージ コレクターによって割り当て解除されます。

于 2012-09-11T15:46:00.370 に答える
2

「q」が参照したオブジェクトがどこにも参照されなくなった場合、ガベージ コレクターはそれを収集します。

于 2012-09-11T15:46:50.813 に答える
1

ガベージ コレクションとそのしくみに関する多くの記事の 1 つを読むのはおそらく時間の価値があるでしょう

あなたの質問に答えるには、いいえ - それはメモリリークを引き起こしません。

于 2012-09-11T15:56:45.957 に答える