【发布时间】:2011-12-21 17:08:52
【问题描述】:
可能重复:
Is there any reason to check for a NULL pointer before deleting?
我经常在代码中看到以下内容:
if(pointer)
delete pointer;
据我了解,删除空指针是安全的,那么这个检查的意义何在?
【问题讨论】:
-
要记住的重要一点是一旦删除就将其设置为NULL。
-
据我了解,您的理解是正确的,但并非所有人都认同。但是让我们看看语言专家怎么说。
-
在 C++ 中删除空指针是绝对安全的,但并不是所有人都知道这一点。在 C 社区中尤其值得注意,其中语言保证 free(NULL) 无效,但人们不喜欢阅读标准,直觉上似乎释放 NULL 会损害系统。因此有更多的例子 if (p) free(p);在 C 世界中:)
-
@DanKruchinin,这听起来很反直觉,我个人从来没有去检查它的标准!但是,当我们这样做时,Linux内核中的
kfree和vfree是否可以这样说?
标签: c++ delete-operator null-pointer