-3
私は配列B
のオブジェクトへのポインタを保持する配列a
を持っているとします。 a[0]
がオブジェクトc
を指しているとします。 私は今a[0] = nullptr
を設定した場合、c
のdestructor
が呼び出され、c
がスタック上に構築された場合はこれc
は破壊され、a[0]
場合c
を参照する唯一のものでした。C++ nullptrへのオブジェクトのポインタのみを設定
私は配列B
のオブジェクトへのポインタを保持する配列a
を持っているとします。 a[0]
がオブジェクトc
を指しているとします。 私は今a[0] = nullptr
を設定した場合、c
のdestructor
が呼び出され、c
がスタック上に構築された場合はこれc
は破壊され、a[0]
場合c
を参照する唯一のものでした。C++ nullptrへのオブジェクトのポインタのみを設定
正規ポインタ(Obj * ptr)を参照すると、という代入のために、が呼び出されることはありません。以下のようなコードがあるのかどうかは呼ばれるかもしれない -
... // Some code and initialization before
{
Obj c;
a[0] = &c;
a[0] = NULL; //c isn't affected in any way by this assignment
} //End of scope. **c's d'tor is called here**
cは、ヒープ上に割り当てられた場合、が、それはメモリが
はそれら**スマート**ポインタで漏洩してしまうのか? – StoryTeller
範囲(および他の多くのものも)によって異なります。その説明ではなく、実際のコードを追加してください。 – Rakete1111
@ StoryTellerいいえ、スタックに割り当てられたオブジェクトを指す普通のポインタ –