打印全局指针给出 coredump
Print global pointer gives coredump
下面我写了一个简单的程序:
#include <stdio.h>
unsigned int *time = 0;
int main(){
printf("time = %u\n", *time);
return 0;
}
这会导致我在 x86-64 上出现分段错误。有人可以解释根本原因吗?
正如一些评论所提到的,您取消引用了一个指针,该指针指向了一个不应该指向的内存区域。
unsigned int *time = 0;
正在声明一个指向无符号整数的指针,它指向的内存地址是地址0x0。然后您取消引用该指针,这是一个问题,因为您要求读取地址 0x0 处的内容,这会导致分段错误。也许如果您更详细地说明您正在尝试做什么,我们可以为您提供一些有关如何继续的其他信息,但我不太确定您对上述程序的确切目的。
下面我写了一个简单的程序:
#include <stdio.h>
unsigned int *time = 0;
int main(){
printf("time = %u\n", *time);
return 0;
}
这会导致我在 x86-64 上出现分段错误。有人可以解释根本原因吗?
正如一些评论所提到的,您取消引用了一个指针,该指针指向了一个不应该指向的内存区域。
unsigned int *time = 0;
正在声明一个指向无符号整数的指针,它指向的内存地址是地址0x0。然后您取消引用该指针,这是一个问题,因为您要求读取地址 0x0 处的内容,这会导致分段错误。也许如果您更详细地说明您正在尝试做什么,我们可以为您提供一些有关如何继续的其他信息,但我不太确定您对上述程序的确切目的。