매달린 포인터입니까? 이 ... * 편곡 [1] 단지 포인터이며, 유효한 메모리 주소를 가리키는 작동하지 않는 이유동적으로 할당 된 포인터 배열의 매달려 포인터
int x = 25;
int** arr = new int*[5];
*arr[1] = x;
나는 알아낼 수 없습니다.
매달린 포인터입니까? 이 ... * 편곡 [1] 단지 포인터이며, 유효한 메모리 주소를 가리키는 작동하지 않는 이유동적으로 할당 된 포인터 배열의 매달려 포인터
int x = 25;
int** arr = new int*[5];
*arr[1] = x;
나는 알아낼 수 없습니다.
arr[1]
은 int*
이며 초기화되지 않았습니다. 그것을 역 참조하기위한 정의되지 않은 동작입니다.
당신은 arr[1] = &x;
말할 수, 다음 arr[1]
는 x
를 가리키는 것이며, *arr[1]
이 작업이 완료되면
(25)가 delete [] arr;
잊지 마세요 것입니다.
Twas 구문 문제 그때 ... 어떤 이유로, 나는 그 라인이 int ** 자체를 역 참조하고 특정 위치에있는 것이 아니라고 생각하고 있었다. 감사합니다 Kerreck! –
@TaylorBishop : 문제 없음 :-) –
arr [1]이 (가) 현재 할당되지 않았습니까 (즉, 현재 코드로 초기화되지 않았습니까?). –
왜 UB가 그렇게 많은가요? –
@ H2CO3 : 그것은 단지 적은 양의 UB 일뿐입니다. UB/게시물에 관한 한, 이것은 더 경미한 사례 중 하나입니다! –