0

「< Address 0x4 out of bounds >」ではなく、初期化前に strs[i] の正確なアドレス値を取得することは可能ですか?? 可能であれば、どのように?

(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++)

Arrays are indexed starting from 0. のような要素はないstrs[4]ため、範囲外になります。アドレスは無意味です。

于 2012-05-10T07:13:00.403 に答える