|
|
1
72
删除空指针是完全“安全”的;这实际上相当于无行动。
编辑
备注
|
|
|
2
40
C++标准保证在
删除表达式
(§8.5.2.5/2).然而,事实确实如此
这是否会调用取消分配函数(
但是,如果标准库没有提供释放函数,会发生什么,也就是说,当我们重载时会发生什么
一个称职的程序员会相应地处理空指针
释放函数,而不是在调用之前,如OP代码所示。同样,将指针设置为
您应该将重置指针视为代码气味。
|
|
|
3
9
如果指针为空携带了您关心的其他信息,您可能会出于其他原因检查空。 |
|
|
4
9
|
|
|
5
4
根据C++035.3.5/2,删除空指针是安全的。 |
|
|
6
3
如果pSomeObject为NULL,delete将不会执行任何操作。所以,不,你不必检查NULL。 我们认为,如果某个傻瓜有可能尝试使用指针,那么在删除指针后为其分配NULL是一种很好的做法。使用NULL指针比使用指向未知内容的指针稍好(NULL指针会导致崩溃,指向已删除内存的指针可能不会) |
|
|
7
1
在删除之前没有理由检查NULL。 如果在代码的某个地方通过执行NULL检查来检查是否已经分配了某些对象,那么在删除后分配NULL可能是必要的。一个例子是按需分配的某种缓存数据。每当清除缓存对象时,都会将NULL分配给指针,以便分配对象的代码知道它需要执行分配。 |
|
|
8
0
我相信之前的开发人员对其进行了“冗余”编码,以节省一些毫秒:
因此,我敢打赌,这些行的作者试图确保pSomeObject1在删除后始终为NULL,而不会产生潜在的不必要的测试和分配成本。 |
|
|
9
-2
所以考虑解放
|
|
|
10
-5
|
|
|
Patrick · 删除动态数组C时程序崩溃++ 10 年前 |
|
|
sestus · 在另一个类中执行删除时出现Valgrind错误 10 年前 |
|
|
Oleksiy · delete的一些用途是什么?[副本] 12 年前 |