可能重复:
Is there any reason to check for a NULL pointer before deleting?
我经常在代码中看到以下内容:
if(pointer)
delete pointer;
根据我的理解,删除空指针是安全的,那么检查的重点是什么?
答案 0 :(得分:9)
delete
将检查指针是否为NULL,因此您不需要检查。
您可能还会看到有些人在删除之后将指针设置为NULL ,这样您就不会做任何愚蠢的事情,比如尝试并使用不再属于您的内存或阻止您删除指针两次,这将导致错误。
答案 1 :(得分:1)
虽然它现在很安全,但并非总是如此:-)因此它可能是习惯性的。还有其他后果要删除。 1)如果您使用专门的内存管理器并覆盖新的和删除操作符,那么您可能需要检查Operator Delete以获取更多详细信息
答案 2 :(得分:1)
无需检查。
The documentation表示删除将“释放ptr指向的内存块(如果不为null)”
答案 3 :(得分:0)
大多数人这样做是因为他们通常会有错误处理(除此之外我没有真正看到进行检查的意义)。在某些情况下,他们这样做是为了检查它们是否正在释放某些东西,而不是意外地在某处更改指针并通过不释放它而导致内存泄漏。 free(NULL);
应该适用于所有情况,而不是错误输出,所以除非涉及错误处理,否则可以删除if语句并免费执行。