首页 >后端开发 >C++ >为什么 C 中的'delete”不自动将指针设置为 NULL?

为什么 C 中的'delete”不自动将指针设置为 NULL?

Linda Hamilton
Linda Hamilton原创
2024-11-11 05:53:03927浏览

Why Doesn't `delete` Automatically Set the Pointer to NULL in C  ?

为什么删除不会自动将指针设置为 NULL

尽管它在防止无效指针相关的崩溃方面有潜在的好处,但 C 标准并没有要求删除操作符在释放内存后自动将指针设置为 NULL。做出此决定的原因是多方面的。

性能

添加将指针设置为 NULL 的指令可能会降低删除操作的性能。虽然这对于大多数应用程序来说可能可以忽略不计,但它可能会影响性能关键型系统。

常量

常量指针提出了潜在的挑战。将 const 指针设置为 NULL 会违反其不变性,从而导致未定义的行为。但是,该标准可以为 const 指针提供特殊情况,允许将它们设置为 NULL。

参数灵活性

标准明确允许删除的参数是一个右值,而不仅仅是一个左值。例如,删除数组涉及将数组名称指定为参数:delete [] array;。在这种情况下,不可能将指针设置为 NULL,因为删除后它没有指向有效的内存位置。

其他注意事项

Bjarne Stroustrup, C 的创建者承认删除期间自动设置 NULL 的潜在好处,但指出实现者尚未广泛采用这种做法。他还强调程序员需要保持警惕,确保在释放后正确处理指针。

总之,虽然通过删除自动设置 NULL 会有好处,但 C 标准选择不强制执行它,因为性能问题、适应某些情况的需要以及程序员在管理指针方面的责任的重要性。

以上是为什么 C 中的'delete”不自动将指针设置为 NULL?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn