私はそのようなコードを持っている:他のオブジェクトが指し示されている場合は、本当にメモリを解放できますか?
public class A: IDisposable
{
public CPlusCode cPlusCode{get;set;}
public void CallB()
{
using(bCode = new B(cPlusCode))
{
//do everything in B
}
}
public void Dispose()
{
cPlusCode.Dispose();
}
}
public class B: IDisposable
{
private CPlusCode cpp;
public B(CPlusCode cPlus)
{
cpp= cPlus;
}
public void Dispose()
{
cpp.Dispose();
//dispose everything
}
}
public static void Main()
{
for(int i=0; i<100000; i++)
{
var aObject = new A();
aObject .CallB();
}
}
の問題は、私がMain
を実行し、B
はインスタンス化するために多くのメモリを食べる、と私の観察から、プログラムによって食べられたメモリではないと思われるとき解放。
他のオブジェクトが指し示されている場合は、本当にメモリを解放できますか?
リソースのコピーを作成したり、新しいリソースを割り当てたりしない限り、リソースをBに破棄しないでください。 CallB()を同じオブジェクトで2回呼び出すと、コードが書き込まれる方法で例外が発生します。 –