重複の可能性:
削除する前にNULLポインターをチェックする理由はありますか?
私は、C ++言語が、pがNULLに等しい場合、deletepが何もしないことを保証していることを知っています。しかし、さまざまなプロジェクト、記事、例では、削除する前にNULLをチェックしていることがわかります。通常はフォーマット
if(pObj)
delete pObj;
なんでそうなの?いくつかの歴史的な理由?オブジェクトを正しく削除する方法について完全に混乱しています。
重複の可能性:
削除する前にNULLポインターをチェックする理由はありますか?
私は、C ++言語が、pがNULLに等しい場合、deletepが何もしないことを保証していることを知っています。しかし、さまざまなプロジェクト、記事、例では、削除する前にNULLをチェックしていることがわかります。通常はフォーマット
if(pObj)
delete pObj;
なんでそうなの?いくつかの歴史的な理由?オブジェクトを正しく削除する方法について完全に混乱しています。
なんでそうなの?
無知。それが何もしていないことを知らない人もいdelete(NULL);
ます。
ポインタが本当に有効かどうかを実際に確認することはできません。2回削除すると、未定義の動作が発生します。
いいえ、これは完全に無意味です。deleteは、すでにnullに設定されているポインターを削除しません。だからあなたの好きなようにnullポインタを削除してください!
delete
は演算子であり、デストラクタを呼び出します。削除演算子がNULL
何も起こらずに使用された場合、すでにすべての回答と同じように、nullをチェックすることは無意味です。
それを行うもう1つの理由は、valgrindの警告を取り除くことです。