重複の可能性:
削除する前にNULLポインターをチェックする理由はありますか?
私はコードで次のことをよく目にします:
if(pointer)
delete pointer;
私の理解では、nullポインターを削除しても安全です。では、このチェックのポイントは何ですか?
重複の可能性:
削除する前にNULLポインターをチェックする理由はありますか?
私はコードで次のことをよく目にします:
if(pointer)
delete pointer;
私の理解では、nullポインターを削除しても安全です。では、このチェックのポイントは何ですか?
delete
ポインタがNULLかどうかをチェックするので、チェックは必要ありません。
また、削除後にポインタをNULLに設定して、自分のものではなくなったメモリを使用したり、ポインタを2回削除するのを止めたりするなど、愚かなことをしないようにする人もいるかもしれません。これにより、エラーが発生します。
チェックは必要ありません。
ドキュメントには、deleteは「ptrが指すメモリブロックの割り当てを解除する(nullでない場合)」と記載されています。
今は安全ですが、いつもではありませんでした:-)ですから、習慣的である可能性があります。また、削除する他の結果があります。1)専用のメモリマネージャーを使用していて、new演算子とdelete演算子をオーバーライドしている場合は、OperatorDeleteのチェックを実行して詳細を確認する必要があります。
ほとんどの人は、他の方法でエラー処理を行うことが多いため、これを行います(それ以外は、チェックを行う意味がわかりません)。場合によっては、何かを解放していて、誤ってどこかでポインタを変更して、解放しないことでメモリリークを引き起こしていないことを確認するためにそれを行います。free(NULL);
すべての場合に機能し、エラーが発生しないはずなので、エラー処理が含まれていない限り、ifステートメントを削除して無料で実行できます。