抛弃错误指针访问的异常会成为C++中的标准行为吗?

bit*_*ise -2 c++ standards

我在Google上进行了快速搜索,但无法找到与此确切主题相关的任何内容.

随着C++继续朝着更现代化的语言方向发展,包括lambdas,基于循环的范围等,似乎这个问题最终可能会出现,如果还没有的话.

我不知道这怎么可能只是一件好事,并提供在C++/CLI,C#,Java等中证明有用的相同好处.如果有人不想要这种行为,它可能只是使用可编程设置,并使用编译器设置关闭,与禁用标准异常或RTTI的方式相同.

此外,有人建议,但不鼓励人们可以为SIGSEGV创建信号处理程序并从那里抛出异常,以模拟建议的行为.现在,虽然这有点像黑客攻击,并且不能保证在所有平台上都可以工作,但如果可以模拟(非标准)大约10行的相同基本行为,那么在C++中实现空引用异常真的有多难代码?

那么,是否存在任何技术或其他原因导致错误指针访问的异常最终无法成为标准的一部分?

Mat*_*son 5

编辑:要正确回答这个问题,我们需要能够准确地了解未来.这在短时间内非常容易,但时间越长,越不确定.我在这里的答复应被视为在不久的将来预见到的尝试.这是否发生在20 - 30年,谁能说出来?

一方面,从技术角度来看:

问题是NULL引用只是坏指针的一种可能情况.如果你将一些随机垃圾粘贴到指针变量中,或者在空闲后访问内存,或者导致内存访问不良的其他内容也会导致SIGSEGV.这是第一个问题.

第二个问题是并非所有硬件和/或软件组合都允许检测错误的指针访问 - 或者在错误的指针访问之后继续检测.

只需if (ptr != NULL) ...在每个指针取消引用之前添加[编译器不确定它是有效指针的地方]会使C++无法忍受地变慢.

从哲学的角度来看,使用RAII:您不应该在代码中使用"原始"指针,如果系统内存不足,new将导致std::bad_alloc异常.在RAII风格的C++中,指针应该无效是没有理由的.如果您不使用RAII,那么您可能应该是.

C++被设计成一种快速的语言,其次是复杂的语言.