「C++はヌルポインタをdeleteしても問題ない」の版間の差分

提供: C++入門
移動: 案内検索
(ページの作成:「C++ (C++14から) は、ヌルポインタを delete しても問題がないので、ポインタがヌルであるかチェックをせずに delete するこ...」)
 
(相違点なし)

2018年4月21日 (土) 21:51時点における最新版

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;

関連項目