C—内存位置的总线错误
C—Bus error with memory locations
我正在尝试显示特定内存位置的内容,但遇到了一个令人费解的错误。下面是我正在使用的函数:
int mem_display(Cmd *cp, char *arguments)
{
int x = 10;
char c = 'c';
int input = 0;
sscanf(arguments, " %x", &input)
int *location = (int*)input;
printf("location of int x: %p\n", (void*)&x);
printf("location of char c: %p\n", (void*)&c);
printf("%x\n", *location);
return 0;
}
当我键入正确的命令 (md) 后跟 x 的位置 (ffbef54c) 时,它会正确显示。但是,当我尝试多一个或少一个时,出现错误:
UNIX-tutor> md ffbef54c
location of int x: ffbef54c
location of char c: ffbef54b
ffbef54c
a
UNIX-tutor> md ffbef54b
location of int x: ffbef54c
location of char c: ffbef54b
ffbef54b
Bus error (core dumped)
尝试将 char 显示为 int 有问题吗?我需要能够显示存储在我输入的位置的任何内容的十六进制值。感谢任何帮助!
您的系统需要正确对齐以取消引用指针。确保您输入的值具有正确的对齐方式(在您的情况下可能是 sizeof(int)
)。或者,只需使用 char
指针。您应该能够以这种方式访问任何地址 - 只要确保它是您的程序已映射并允许访问的地址!
我正在尝试显示特定内存位置的内容,但遇到了一个令人费解的错误。下面是我正在使用的函数:
int mem_display(Cmd *cp, char *arguments)
{
int x = 10;
char c = 'c';
int input = 0;
sscanf(arguments, " %x", &input)
int *location = (int*)input;
printf("location of int x: %p\n", (void*)&x);
printf("location of char c: %p\n", (void*)&c);
printf("%x\n", *location);
return 0;
}
当我键入正确的命令 (md) 后跟 x 的位置 (ffbef54c) 时,它会正确显示。但是,当我尝试多一个或少一个时,出现错误:
UNIX-tutor> md ffbef54c
location of int x: ffbef54c
location of char c: ffbef54b
ffbef54c
a
UNIX-tutor> md ffbef54b
location of int x: ffbef54c
location of char c: ffbef54b
ffbef54b
Bus error (core dumped)
尝试将 char 显示为 int 有问题吗?我需要能够显示存储在我输入的位置的任何内容的十六进制值。感谢任何帮助!
您的系统需要正确对齐以取消引用指针。确保您输入的值具有正确的对齐方式(在您的情况下可能是 sizeof(int)
)。或者,只需使用 char
指针。您应该能够以这种方式访问任何地址 - 只要确保它是您的程序已映射并允许访问的地址!