首页  >  文章  >  后端开发  >  为什么C在删除指针后不自动将指针置空?

为什么C在删除指针后不自动将指针置空?

Susan Sarandon
Susan Sarandon原创
2024-11-12 11:53:02276浏览

Why Does C   Not Automatically Nullify Pointers After Deletion?

删除后自动指针置空的标准化

C 语言缺乏自动将删除的指针设置为 NULL 的机制,使程序员容易受到无效指针访问导致的崩溃。这一疏忽引发了人们对其排除在标准之外的原因的质疑。

性能注意事项:

一个潜在的原因是性能问题。添加额外的指令来执行指针无效可能会影响删除操作的速度。然而,编译器优化可能会减轻这种影响,使其成为一个可以忽略不计的问题。

常量指针:

另一个考虑因素是常量指针的处理。理论上,该标准可以解决这种特殊情况,并允许左值操作数自动无效。然而,这需要语言语义的额外复杂性。

语言设计者的文档:

原始 C 设计者 Bjarne Stroustrup 提供了对此问题的见解:

  • 实现可以在删除后显式地将左值操作数设置为零。
  • 尽管 Stroustrup 希望实现者采用这种做法,但它尚未获得广泛的支持。

参数类型:

根据 Stroustrup 的说法,缺乏自动无效的根本原因是,delete 的参数可能并不总是左值。如果没有额外的开销和语言设计的复杂性,右值参数(例如临时对象)就无法被取消。

最终,在 C 标准中不包括自动指针无效的决定可能是潜在利益和潜在利益之间的折衷。成本。虽然它可以防止某些崩溃,但它引入了额外的复杂性和潜在的性能影响,这可能并不总是理想或可行的。

以上是为什么C在删除指针后不自动将指针置空?的详细内容。更多信息请关注PHP中文网其他相关文章!

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