【问题标题】:What do the error codes / error values / statuses mean in C?C 中的错误代码/错误值/状态是什么意思?
【发布时间】:2023-02-22 05:44:23
【问题描述】:

我知道:

  • 返回0表示程序执行成功。
  • 返回-1表示程序未能正常执行。
  • 您可以使用自己的退出代码返回,并使用例如退出(69)

我在互联网上搜索过,也发现了一些东西操作系统有自己的错误代码例如 Linux 的错误代码来自 0 to 255,Windows(我正在使用的操作系统)使用格式为 0xc0000000 的错误代码(如果我在任何方面有误,请纠正我。)

但是,当我使用 Code::Blocks IDE 时,我有错误代码/值,例如:

返回状态为 -1073740940 (0xC0000374) 的进程

搜索了0xC0000374,发现是heap corruption的意思,所以有用。

然而搜索一个几乎随机的数字-1073740940让我无处可去,所以一般来说这个值是多少?为什么当程序由于某些错误而不得不终止时,这个值必须如此大且随机? 程序中的某些变量是否由于某些未定义的行为而损坏?它从哪里来的?

提前致谢。

【问题讨论】:

  • -1073740940 是十六进制 0xC0000374 的有符号十进制表示
  • 并不是说 Windows 中的所有错误代码都以 0xC 开头。许多错误代码不是以此开头的。有关详细信息,请参阅this Microsoft documentation。此外,这些是 NTSTATUS 错误代码,这些只是 Windows 上的一种错误代码。
  • 返回 -1 表示程序未能正确执行。否 [至少在 POSIX 系统上]:你不能真正返回一个 [有意义的] 负数。一般返回1(不是-1) 表示错误。大多数程序返回0/1,但错误代码实际上是敞开的。有关大约,请参阅man rsync。它可以返回 20 个错误。

标签: c error-handling


【解决方案1】:

您在本例中看到的两个值是相同的。

十进制值 -1073740940 表示为十六进制的 32 位二进制补码值时为 0xC0000374。该值只是以两种不同的方式显示。

【讨论】:

    猜你喜欢
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多