我在下面写了一个简单的程序:
#include <stdio.h>
unsigned int *time = 0;
int main(){
printf("time = %u\n", *time);
return 0;
}
这会让我在x86-64上出现分段错误。有人可以解释根本原因吗?
答案 0 :(得分:3)
正如一些评论所提到的那样,你正在取消引用指向它不应该存在的内存区域的指针。
unsigned int *time = 0;
声明指向无符号整数的指针,它指向的内存地址是地址0x0。然后您取消引用此指针,这是一个问题,因为您要求读取地址0x0处的内容,这会导致分段错误。也许如果你详细说明你想要做什么,我们可以给你一些关于如何进行的额外信息,但我不确定你对上述程序的确切要求。