2013-02-18 6 views
0

매달린 포인터입니까? 이 ... * 편곡 [1] 단지 포인터이며, 유효한 메모리 주소를 가리키는 작동하지 않는 이유동적으로 할당 된 포인터 배열의 매달려 포인터

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

나는 알아낼 수 없습니다.

+1

arr [1]이 (가) 현재 할당되지 않았습니까 (즉, 현재 코드로 초기화되지 않았습니까?). –

+0

왜 UB가 그렇게 많은가요? –

+0

@ H2CO3 : 그것은 단지 적은 양의 UB 일뿐입니다. UB/게시물에 관한 한, 이것은 더 경미한 사례 중 하나입니다! –

답변

5

arr[1]int*이며 초기화되지 않았습니다. 그것을 역 참조하기위한 정의되지 않은 동작입니다.

당신은 arr[1] = &x; 말할 수, 다음 arr[1]x를 가리키는 것이며, *arr[1]이 작업이 완료되면


(25)가 delete [] arr; 잊지 마세요 것입니다.

+0

Twas 구문 문제 그때 ... 어떤 이유로, 나는 그 라인이 int ** 자체를 역 참조하고 특정 위치에있는 것이 아니라고 생각하고 있었다. 감사합니다 Kerreck! –

+0

@TaylorBishop : 문제 없음 :-) –