在C中,我发现如果发生运行时错误,则返回垃圾值.但是为什么在这种情况下会返回垃圾值?
此代码将给出运行时错误.我知道为什么在这里发生运行时错误.但我想知道为什么返回值是垃圾值.
#include<stdio.h>
int main()
{
int *x;
*x = 10;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这不是垃圾值,它是分段错误的Microsoft Windows错误代码; 0xC0000005(STATUS_ACCESS_VIOLATION是正确的名称)
x是未初始化的,因此它可能指向操作系统已授予您访问程序的内存,因此当您取消引用它时会出现访问冲突.在Linux上,您可能希望看到139(SIGSEGV),具体取决于操作系统和编译器.
编辑:请注意,您main不会返回此值 - 该过程将被操作系统终止.