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;

関連項目




スポンサーリンク