-1
我々はC++次のコードがあるとします。で構成される構造体のメモリを解放するための正しい方法
struct A
{
int* a;
A()
{
a = new int(5);
}
~A()
{
delete a;
}
};
struct B
{
A a;
int b;
B()
{
a = A();
b = 10;
}
};
int main()
{
B b;
return 0;
}
は、それを実行し、Aのデストラクタは二回と呼ばれるが、なぜます? Bの暗黙のデストラクタがBのメンバのすべてのデストラクタを呼び出すのは分かりますが、Aのデストラクタへの2回目の呼び出しはいつ起こりますか?そのような場合にメモリを処理する適切な方法は何ですか?
debugerなくても手で、 はこれをデバッグしてください、あなたはもっと理解する: '= A();' –