2010年2月12日金曜日

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

タイトルの通りです。
意外と知らない人が多いので書いてみた。C++の規約レベルで安全は保障されているので大丈夫。
(中略)if the value of the operand of delete is the null pointer the operation has no effect.
ただし、(中略)と太字強調は筆者による。
1//冗長なdelete
2if(ptr)
3{
4    delete ptr;
5}
6 
7//楽ちんなdelete
8delete ptr;
上記のコードはどちらも安全。delete[]についても同様。
VC++のoperator deleteの中身を見てみたら、内部でnullチェックを行っているようだ。

0 件のコメント:

コメントを投稿