在 c++ 中删除一个 NULL pointer (空指针)

@is2120

1. 在 c++ 中删除一个 NULL pointer (空指针)是安全的

2. 标准中相关内容如下:
"In either alternative, if the value of the operand of delete is the
null pointer the operation has no effect."

3. 一个有用的宏 @is2120
#define my_delete(x) {delete x; x = NULL;}

 

4. 更好的方法

使用RAii

更为优雅的方式是使用 smart pointer。

 

5. delete pointer;

这个语句会发生什么?

它不会改变pointer所指向的地址,而只是释放pointer指向的内存空间。

此时执行 pointer = NULL; 是个存在争议的话题;最好不必如此

更好的方式还是如上建议,使用 smart pointer,而不是直接操作 raw pointer。

@is2120

posted @ 2011-05-15 09:49  BiG5  阅读(326)  评论(0编辑  收藏  举报