2017-10-03 4 views
-3

私は配列Bのオブジェクトへのポインタを保持する配列aを持っているとします。 a[0]がオブジェクトcを指しているとします。 私は今a[0] = nullptrを設定した場合、cdestructorが呼び出され、cがスタック上に構築された場合はこれcは破壊され、a[0]場合cを参照する唯一のものでした。C++ nullptrへのオブジェクトのポインタのみを設定

+3

はそれら**スマート**ポインタで漏洩してしまうのか? – StoryTeller

+1

範囲(および他の多くのものも)によって異なります。その説明ではなく、実際のコードを追加してください。 – Rakete1111

+0

@ StoryTellerいいえ、スタックに割り当てられたオブジェクトを指す普通のポインタ –

答えて

1

正規ポインタ(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は、ヒープ上に割り当てられた場合、が、それはメモリが

関連する問題