乐闻世界logo
搜索文章和话题

Is it safe to delete a NULL pointer?

4 个月前提问
3 个月前修改
浏览次数35

1个答案

1

删除NULL指针在C++中是安全的。根据C++标准,当delete操作符接收到一个NULL指针时,它不会执行任何操作。这意味着,如果尝试删除一个已经是NULL的指针,程序不会崩溃或者产生运行时错误。

为什么这是安全的?

C++标准中明确规定了delete NULL;是没有任何效果的。这是一种防御性的编程实践,可以防止多次删除同一个对象。如果没有这个规定,程序员需要手动检查指针是否为NULL,才能安全地调用delete,这会使代码更加复杂且容易出错。

示例

考虑以下代码片段:

cpp
int* ptr = new int(10); // 分配内存并初始化 delete ptr; // 删除指针所指向的内存 ptr = nullptr; // 将ptr设置为NULL // 这里再次调用delete是安全的,因为ptr是NULL delete ptr;

在这个例子中,即使ptr已经被设置为nullptr,第二次调用delete ptr;也是完全安全的,不会有任何运行时错误或者未定义行为发生。

总结

总的来说,尽管删除NULL指针是安全的,但最佳实践是在删除指针后将其设置为NULL,以避免悬挂指针(dangling pointer)问题。这样可以确保即使指针被再次删除,程序也不会出现异常行为。

2024年6月29日 12:07 回复

你的答案