0

是否有可能在初始化之前获得 strs[i] 的确切地址值,而不是“< Address 0x4 out of bounds >”??如果可能的话,那怎么办?

(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 >
4

1 回答 1

2

这不好:

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

数组的索引从 0 开始。没有这样的元素strs[4],这就是你超出范围的原因。地址没有意义。

于 2012-05-10T07:13:00.403 回答