为什么删除不会自动将指针设置为 NULL
尽管它在防止无效指针相关的崩溃方面有潜在的好处,但 C 标准并没有要求删除操作符在释放内存后自动将指针设置为 NULL。做出此决定的原因是多方面的。
性能
添加将指针设置为 NULL 的指令可能会降低删除操作的性能。虽然这对于大多数应用程序来说可能可以忽略不计,但它可能会影响性能关键型系统。
常量
常量指针提出了潜在的挑战。将 const 指针设置为 NULL 会违反其不变性,从而导致未定义的行为。但是,该标准可以为 const 指针提供特殊情况,允许将它们设置为 NULL。
参数灵活性
标准明确允许删除的参数是一个右值,而不仅仅是一个左值。例如,删除数组涉及将数组名称指定为参数:delete [] array;。在这种情况下,不可能将指针设置为 NULL,因为删除后它没有指向有效的内存位置。
其他注意事项
Bjarne Stroustrup, C 的创建者承认删除期间自动设置 NULL 的潜在好处,但指出实现者尚未广泛采用这种做法。他还强调程序员需要保持警惕,确保在释放后正确处理指针。
总之,虽然通过删除自动设置 NULL 会有好处,但 C 标准选择不强制执行它,因为性能问题、适应某些情况的需要以及程序员在管理指针方面的责任的重要性。
以上是为什么 C 中的'delete”不自动将指针设置为 NULL?的详细内容。更多信息请关注PHP中文网其他相关文章!