gpt4 book ai didi

C—内存位置的总线错误

转载 作者:行者123 更新时间:2023-11-30 15:23:47 26 4
gpt4 key购买 nike

我试图显示特定内存位置的内容,但遇到了令人费解的错误。以下是我正在使用的功能:

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 指针即可。您应该能够以这种方式访问​​任何地址 - 只需确保您的程序已映射并允许访问该地址即可!

关于C—内存位置的总线错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28652509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com