这是一个悬挂指针吗?动态分配指针数组中的悬挂指针
int x = 25;
int** arr = new int*[5];
*arr[1] = x;
我想不通为什么这不起作用...... *改编[1]只是一个指针,指向一个有效的内存地址。
这是一个悬挂指针吗?动态分配指针数组中的悬挂指针
int x = 25;
int** arr = new int*[5];
*arr[1] = x;
我想不通为什么这不起作用...... *改编[1]只是一个指针,指向一个有效的内存地址。
arr[1]
是一个int*
,它是未初始化的。这是未定义的行为来解引用它。
可以说arr[1] = &x;
,然后arr[1]
将指向x
和*arr[1]
将25
不要忘记delete [] arr;
时,即可大功告成。
Twas是一个语法问题,然后......出于某种原因,我认为该行是取消引用int **本身,而不是指定位置中的那个。感谢Kerreck! – 2013-02-18 21:55:38
@TaylorBishop:没问题:-) – 2013-02-18 21:58:03
arr [1]在哪里被分配(即,它目前未被您的代码初始化)? – 2013-02-18 21:39:05
为什么这么多UB? – 2013-02-18 21:39:53
@ H2CO3:这只是少量的UB。就UB/post而言,这是一个温和的案例! – 2013-02-18 21:41:12