是否有可能在初始化之前获得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 >
答案 0 :(得分:2)
这不好:
char *strs[4];
for (i = 1; i <= 4; i++)
数组从0开始编制索引。没有strs[4]
这样的元素,这就是你出界的原因。地址毫无意义。