1

C# を使用してメモリ リークを作成したいので、次のコードを作成して作成します。概念は、GC.SuppressFinalize() を呼び出して GC の作業を防止するだけの明示的な Dispose を作成することです。しかし、コードを実行しているときにメモリがリークしないようです。理由を教えてくれる人はいますか?

class Program
{
    static void Main(string[] args)
    {
        while (true)
        {
            var t = new Foo();
            t.create_leak();
            t.Dispose();
        }
    }        
}
class Foo:IDisposable
{
    public void create_leak() {
        m_value = new int[10000];
        Console.WriteLine(m_value[10].ToString()+DateTime.Now.ToString());
    }

    public void Dispose() { GC.SuppressFinalize(this); }

    private int[] m_value;

    ~Foo() { }
}
4

3 に答える 3

0

「ビットマップ」や「フォント」などのオブジェクトを使用してメモリ リークを生成することをお勧めします。これらのオブジェクトは、明示的に破棄する必要があります。そうしないと、メモリ リークが発生する可能性があります。例はここにあります:

ビットマップを継続的に作成すると、メモリ リークが発生する

于 2013-10-22T10:19:18.957 に答える