取消引用不返回的函数时会发生什么?

时间:2016-10-26 12:08:16

标签: c++ pointers crash return

variableName = pointerName -> getValue();

假设getValue()有两条路由,其中​​只有一条路由返回(未定义),但仍会编译。如果没有检查或捕获这个无法返回的错误,如果这是在实时场景中会发生什么?它会导致程序崩溃吗?

1 个答案:

答案 0 :(得分:0)

如果你"脱落"应该返回值的函数的结尾,行为是未定义的。这意味着任何都可能发生。未定义行为的典型示例:

  • 程序立即崩溃(这是你可能希望的最好的)
  • 程序稍后在代码的一些完全不相关的部分崩溃
  • 程序格式化您的硬盘
  • 该程序会导致您的显示器着火或爆炸(实际上这是可能的)。
  • 该程序似乎在大多数时间都有效,但偶尔(通常在向MD /重要客户/教授演示时),它会崩溃。
  • 该程序只有在主要客户站点上安装并且负载很大时才会崩溃。

不要试图预测未定义的行为将会发生什么 - 任何事情都可能发生。