這是一個懸掛指針嗎?動態分配指針數組中的懸掛指針
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