2013-02-18 116 views
0

这是一个悬挂指针吗?动态分配指针数组中的悬挂指针

int x = 25; 
int** arr = new int*[5]; 
*arr[1] = x; 

我想不通为什么这不起作用...... *改编[1]只是一个指针,指向一个有效的内存地址。

+1

arr [1]在哪里被分配(即,它目前未被您的代码初始化)? – 2013-02-18 21:39:05

+0

为什么这么多UB? – 2013-02-18 21:39:53

+0

@ H2CO3:这只是少量的UB。就UB/post而言,这是一个温和的案例! – 2013-02-18 21:41:12

回答

5

arr[1]是一个int*,它是未初始化的。这是未定义的行为来解引用它。

可以说arr[1] = &x;,然后arr[1]将指向x*arr[1]将25


不要忘记delete [] arr;时,即可大功告成。

+0

Twas是一个语法问题,然后......出于某种原因,我认为该行是取消引用int **本身,而不是指定位置中的那个。感谢Kerreck! – 2013-02-18 21:55:38

+0

@TaylorBishop:没问题:-) – 2013-02-18 21:58:03