2013-02-18 141 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