这更像是一个理论问题.为什么c ++应用程序在跟踪空指针时会崩溃?
崩溃机制是否有意保护应用程序正在运行的系统,或者来自语言的核心的一个不可避免的事实?如果是后者,那么将来可以预期的空指针的自动处理是什么?
为什么c ++应用程序在跟踪空指针时会崩溃?
...
还是一个不可避免的事实来自语言的核心?
该标准没有规定平台应该/必须如何处理访问空指针.这只是未定义的行为.当您关注/取消引用空指针时,平台可以自由选择对它们有意义的任何操作.
跟随空指针时,C++应用程序可能会崩溃.C++标准中没有任何内容表明它们会.尝试取消引用空指针会调用所谓的"未定义行为",这意味着标准拒绝说出会发生什么.
至于为什么大多数情况会导致崩溃,大多数编译器作弊并在字节0处产生空指针点,并且许多操作系统使地址0不可写(有时也不可读),因此尝试访问地址会触发处理器故障.
至于自动处理问题,这正是触发故障的关键.(另一种方法是让程序无法运行.)在这一点上没有进一步的自动化 - 程序已经脱轨并且无法信任,操作系统无法知道你是什么试图指出.