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]
Вот почему вы выходите за пределы. Адрес бессмысленный.