Почему я не могу получить доступ к памяти напрямую? - PullRequest
0 голосов
/ 01 апреля 2011
(gdb) p it
$2 = (item *) 0x6
(gdb) p *it
$3 = {next = 0x0, prev = 0x0, h_next = 0x0, time = 0, exptime = 0, nbytes = 7, refcount = 1, nsuffix = 6 '\006', it_flags = 2 '\002', slabs_clsid = 1 '\001', nkey = 6 '\006', 
  end = 0x7f0890b6e040}
(gdb) p *0x6
Cannot access memory at address 0x6

Разве p *it и p *0x6 не одно и то же здесь ??

Ответы [ 2 ]

1 голос
/ 04 апреля 2011

Если вы не находитесь на встроенной цели, в которой по адресу 0 сопоставлена ​​реальная память, значение it == 0x6 равно поддельным (обычно результат разыменования нулевого указателя).

Тот факт, что gdb печатает *it, вероятно, означает, что в gdb есть ошибка, но трудно сказать.К сожалению, вы не сказали, какую версию GDB и какую ОС вы используете.

0 голосов
/ 01 апреля 2011

Команда gdb 'p' может использоваться только для печати значений переменных. Если вы хотите проверить память, посмотрите там

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...