由于未定义的行为,许多不好的事情发生并继续发生(或者没有,谁知道,任何事情都可能发生)。我知道这是为了给编译器优化留下一些回旋余地,也许还可以让 C++ 更容易移植到不同的平台和架构。然而,由未定义行为引起的问题似乎太大而无法通过这些论点来证明。未定义行为的其他论据是什么?如果没有,为什么仍然存在未定义的行为?
编辑为我的问题添加一些动机:由于与较少 C++ 狡猾的同事的几次糟糕经历,我已经习惯于使我的代码尽可能安全。断言每一个论点,严格的 const 正确性和类似的东西。我尽量留出尽可能少的空间以错误的方式使用我的代码,因为经验表明,如果有漏洞,人们会使用它们,然后他们会打电话给我说我的代码不好。我认为让我的代码尽可能安全是一种好的做法。这就是为什么我不明白为什么存在未定义的行为。有人可以给我一个在运行时或编译时无法检测到且没有相当大开销的未定义行为的示例吗?