Я пытаюсь отобразить содержимое определенной ячейки памяти, и у меня возникает загадочная ошибка. Ниже функция Я использую:Ошибка C-Bus с ячейками памяти
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;
}
Когда я ввожу соответствующую команду (мД), а затем по месту нахождения х (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)
Есть ли проблема с попыткой отобразить символ как межд? Мне нужно показать шестнадцатеричное значение того, что хранится в месте ввода. Любая помощь приветствуется!
Есть ли способ узнать, имеет ли значение правильное выравнивание или нет, кроме тестирования, чтобы узнать, получится ли ошибка шины? – JazzBullets
Уверен, что вы можете проверить значение; убедитесь, что у него есть правильное количество бит младшего порядка, равное нулю. –
Большая часть этой терминологии для меня нова, поэтому, к сожалению, я точно не знаю, что это значит. Мне нужно иметь возможность отображать 16 бит в строке из любого места, к которому имеет доступ программа, так же как я могу отображать значение в местоположении ffbef54b, или это полностью не работает? – JazzBullets