2010年2月12日金曜日

C++でnullポインタをdeleteしても安全

Check
タイトルの通りです。
意外と知らない人が多いので書いてみた。C++の規約レベルで安全は保障されているので大丈夫。
(中略)if the value of the operand of delete is the null pointer the operation has no effect.
ただし、(中略)と太字強調は筆者による。
//冗長なdelete
if(ptr)
{
    delete ptr;
}

//楽ちんなdelete
delete ptr;
上記のコードはどちらも安全。delete[]についても同様。
VC++のoperator deleteの中身を見てみたら、内部でnullチェックを行っているようだ。

0 件のコメント:

コメントを投稿