GDB:获取准确的内存地址,而不是<地址0x4越界>

GDB: getting exact memory address not < Address 0x4 out of bounds >

本文关键字:地址 gt 越界 lt 0x4 获取 GDB 内存      更新时间:2023-10-16

是否可以在初始化之前获取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 >

这不好:

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

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