GDB: получение точного адреса памяти не <адрес 0x4 за пределами>

Возможно ли получить точное значение адреса strs[i] до инициализации, а не "<адрес 0x4 вне границ>"?? если возможно, то как?

(gdb) list
15  int main()
16  {
17    int j, i;
18    char *strs[4];
19  
20    for (i = 0; i <= 3; i++)
21    {
22      strs[i] = new char [11];
23    }
24        
25    for (i = 0; i <= 3; i++)
26    {
27      init(strs[i]);
28    }
29  
30    for (j = 0; j <= 3; j++)
31    {
32      cout << strs[j] << endl;
33    }
34  
35    return(0);
36  
37  }

Ниже приведено значение strs[i]:

(gdb) p strs[i]
$4 = 0x4 < Address 0x4 out of bounds >

1 ответ

Это не хорошо

   char *strs[4];
   for (i = 1; i <= 4; i++)

Массивы индексируются, начиная с 0. Нет такого элемента, как strs[4]Вот почему вы выходите за пределы. Адрес бессмысленный.

Другие вопросы по тегам