gpt4 book ai didi

c++ - 为什么编译不会为导致未定义行为的代码发出错误

转载 作者:行者123 更新时间:2023-11-30 02:10:39 25 4
gpt4 key购买 nike

比如文章通常说如果malloc和delete配对,或者说不对不做。

但是为什么编译器不为我们做一些检查。

会不会有这样的代码是正确的和有意的?因此编译器不能总是说这样做是错误的吗?

或者编译器要做到这一点在技术上有什么困难吗?

最佳答案

很多原因。不在我的脑海中。

  • 一些未定义的行为可能具有已定义的效果作为特定于实现的扩展。

  • 一些未定义的行为仅根据程序的环境或输入发生,因此代码可能有可能导致未定义的行为,但不一定会这样做。

  • 许多未定义行为的实例很难诊断。这可能涉及在后续翻译单元中可能发生冲突的事情。如果它们很容易诊断,那么该标准可能会像在许多情况下那样需要实现来发出诊断。

关于c++ - 为什么编译不会为导致未定义行为的代码发出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4417883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com