デストラクターでのポインターの NULL 化は価値がありますか?
C では、生のポインターを使用してメモリーを管理する場合、オブジェクトの破棄を適切に処理することが不可欠です。一般的な方法の 1 つは、割り当てられたメモリを「クリーンアップ」するために、デストラクターで NULL へのポインターを設定することです。ただし、この方法は本当に必要ですか?
次のようなメモリを割り当てるクラスのデストラクタ内で、デストラクタ内でポインタ バーを NULL に設定するという疑問が生じます。メモリが正しく割り当て解除されていると仮定すると、時間的には効果がないと考えられます。しかし、この実践は、特にデバッグ シナリオにおける潜在的な利点についての議論を引き起こしました。
<code class="cpp">class Foo { Foo() : bar(new Bar) {} ~Foo() { delete bar; } void doSomething() { bar->doSomething(); } private: Bar* bar; };</code>
デストラクター
でポインターを NULL に設定しないようにします。この方法は一般に有益ではなく、ビルドのデバッグ時に隠れたバグにつながる可能性さえあります。適切なメモリ管理を実践し、この特定の手法に依存しないことをお勧めします。以上がC デストラクターではポインターを Null にする必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。