Как разыменовать и распечатать каждый элемент массива указателей? - PullRequest
1 голос
/ 19 октября 2019

Допустим, у меня есть массив указателей:

struct S {int x;};
S *arr[3] = {new S{1}, new S{2}, new S{3}};

Я хочу сделать gdb разыменование и распечатать каждый элемент массива.

Печать одного элемента проста:

(gdb) p *arr[0]                                                                                            
$1 = {x = 1}

но я хочу напечатать каждый элемент в массиве таким образом.

Я пробовал p arr, но он выводит указатели, а не объектыони указывают на:

(gdb) p arr
$1 = {0x613c20, 0x613c40, 0x613c60}

1 Ответ

2 голосов
/ 19 октября 2019

Я не нашел лучшего, чем это:

(gdb) set $i=0
(gdb) p *arr[$i++]
$102 = {x = 1}
(gdb) 
$103 = {x = 2}
(gdb) 
$104 = {x = 3}
(gdb)

возможно, это может помочь.

примечание: просто нажмите return, чтобы показать следующее значение.

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