关于程序返回值

退役前夕,我决定把之前写代码时遇到的一些程序返回值公布出来。方便大家知道自己的程序到底出了什么问题。

关于C++控制台程序的返回值

大家可以打开头文件NTStatus.h,这里面定义了所有返回值的含义。在DEV-C++中,按住Ctrl再点击,可以进入头文件。程序返回值是一个十进制数,大家可以用Windows自带的计算器,在程序员模式下,将其转化为十六进制数,然后在头文件里搜索即可。

0 : STATUS_SUCCESS(0x00000000)

程序正常结束。我就是来凑数的qwq

3221225725 : STATUS_STACK_OVERFLOW(0xC00000FD)

这个应该是最常见的错误了,从它的名字中也可以看出,我们的程序出现了栈溢出。检查递归深度是否过大。

3221225477 : STATUS_ACCESS_VIOLATION(C0000005)

这个叫段错误,说白了就是程序访问了不该访问的内存。检查是否有野指针,或者数组下标越界。

3221225614 : STATUS_FLOAT_DIVIDE_BY_ZERO(0xC000008E)

这个是浮点数除零错。检查程序在执行浮点数运算的时候除数是否在某个时刻变成了零。

3221225620 : STATUS_INTEGER_DIVIDE_BY_ZERO(0xC0000094)

这个说明某个整数被零除了。

3221225501 : STATUS_ILLEGAL_INSTRUCTION(0xC000001D)

顾名思义,CPU执行到了非法的指令。这个问题可能是由于内存中原本正确的代码被错误地修改导致的。换句话说,任何可能导致段错误的问题都可以导致这个问题。

3221225622 : STATUS_PRIVILEGED_INSTRUCTION(0xC0000096)

我们的程序执行了CPU的特权指令。这类指令只用于操作系统或其他系统软件,一般不直接提供给用户使用。产生这种错误的原因同样可能是段错误。

作者目前遇到的就这么多。如果读者以后遇到其他的返回值,可以自己查阅头文件。

你可能感兴趣的:(其他)