【问题标题】:What happens when dereferencing a function that doesn't return?取消引用不返回的函数时会发生什么?
【发布时间】:2017-03-08 19:05:55
【问题描述】:
variableName = pointerName -> getValue();

假设getValue() 有两条路线,其中只有一条有返回值(未定义),但它仍然可以编译。如果这是在实时场景中,如果没有任何东西检查或捕捉到这个不归路的错误,会发生什么?它会使程序崩溃吗?

【问题讨论】:

  • 能否贴出代码让大家看清楚你的问题?
  • 未定义的行为。任何事情都有可能发生。
  • 您是在要求我们解释未定义行为的行为吗?
  • 我认为 OP 不知道 UB 是什么。
  • 程序会崩溃吗?”可以。它还可以继续运行并格式化您的驱动器。未定义的行为没有具体的结果或结果。

标签: c++ pointers crash return


【解决方案1】:

如果你“掉”了一个应该返回值的函数的末尾,那么行为是未定义的。这意味着任何事情都可能发生。未定义行为的典型示例:

  • 程序立即崩溃(这是您所希望的最好结果)
  • 程序稍后在代码的某些完全不相关的部分崩溃
  • 程序格式化您的硬盘
  • 该程序会导致您的显示器起火或爆炸(这实际上是可能的)。
  • 该程序似乎在大多数情况下都可以运行,但只是偶尔(通常是在向 MD/重要客户/教授演示时),它会崩溃。
  • 该程序仅在安装在主要客户站点并承受大量负载时才会崩溃。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    相关资源
    最近更新 更多