GDB:获取准确的内存地址不是<地址0x4超出界限>

时间:2012-05-10 07:05:05

标签: c++ gdb memory-address

是否有可能在初始化之前获得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 个答案:

答案 0 :(得分:2)

这不好:

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

数组从0开始编制索引。没有strs[4]这样的元素,这就是你出界的原因。地址毫无意义。