首页 > 后端开发 > C++ > 为什么 C 在 `delete` 之后不自动清空指针?

为什么 C 在 `delete` 之后不自动清空指针?

Susan Sarandon
发布: 2024-11-16 05:53:03
原创
722 人浏览过

Why Doesn't C   Automatically Nullify Pointers After `delete`?

删除后自动指针置空

删除后自动指针置空的遗漏一直困扰着开发者。虽然这样的机制可以通过使指针无效来防止崩溃,但它也引起了对性能和与 const 指针的兼容性的担忧。

性能影响

这种遗漏的一个潜在原因是使指针无效所需的附加指令的性能开销。在性能关键型应用程序中,这可能会对执行速度产生显着影响。

常量指针

另一个考虑因素是常量指针的行为。清空 const 指针会引入潜在的歧义,因为该指针无法重新分配给另一个值。这可能会在存在 const 指针的情况下导致混乱和意外行为。

Stroustrup 的观点

C 创建者 Bjarne Stroustrup 已经解决了这个问题,并指出该标准明确允许实现删除以使左值操作数无效。然而,他发现这种做法并没有被实现者广泛采用。

关键要点

虽然删除后自动指针无效的好处是显而易见的,但它的遗漏是可能是由于性能问题和 const 指针的兼容性问题造成的。因此,开发者在删除动态内存后必须显式地使指针无效,以防止无效指针访问错误。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板