C++はヌルポインタをdeleteしても問題ない
提供: C++入門
2018年4月21日 (土) 21:51時点におけるDaemon (トーク | 投稿記録)による版 (ページの作成:「C++ (C++14から) は、ヌルポインタを delete しても問題がないので、ポインタがヌルであるかチェックをせずに delete するこ...」)
スポンサーリンク
C++ (C++14から) は、ヌルポインタを delete しても問題がないので、ポインタがヌルであるかチェックをせずに delete することができます。
読み方
- delete
- でりーと
概要
C++では、メモリの確保と解放は、newとdelete が使われます。
C++では、ヌルポインタを delete しても問題ありません。 C++14 からは、式がヌルポインタ値(null pointer value)として評価された場合、デストラクタは呼び出されず、解放関数は呼び出されません。
C++14 までは、式がヌルポインタ値として評価された場合、デストラクタは呼び出されず、解放関数が呼び出される場合と呼び出されない場合があります(実装で定義)。しかし、デフォルトの解放関数は、ヌルポインタを渡されたときに何もしないことが保証されます。
delete するときに ポインタが NULL かどうかチェックをする、以下のようなコードを書いていたかもしれません。
if (p) { delete p; }
delete演算子が ヌルポインタ(nullptr)を渡されたときに、何もしないことが保証されるのであれば、 ヌルチェックは不要となるので、以下のコードが書けます。
delete p;
関連項目
ツイート
スポンサーリンク