해결된 질문
21.10.08 11:54 작성
·
137
0
메모리 창에 &pp 해서 나온 주소값이 가리킨 곳으로 가면
pp인 거잖아요 pp에 들어있는 값이 0000 0001 이면
주소2 [ ]
주소1(유효하지 않은 주소) [ ]
pp [ 주소1 00000001 ]
int** pp = (int**)arr2;
이렇게 주소2가 가리키는 곳 (**pp)까지 갈것도 없이 *pp단계에서 크러쉬 되는 거 아닌가요?
pp 자체가 주소인데 왜 &를 붙여서 &pp를 메모리 창에 입력하는 건가요?
&를 붙이면 pp의 주소가 되니 int***pp 로 되는거 아닌가요?
답변 1
1
2021. 10. 08. 16:18
메모리 디버그 창에서의 &변수명은 C++ 문법과 좀 별도로 생각해주시기 바랍니다.
pp가 주소를 담고 있는 바구니라고 가정해봅시다.
이 때 메모리 창에 pp를 입력하면, 실제 pp 안에 있는 주소 값으로 서칭이 됩니다.
반면 &pp를 하면, pp라는 바구니 자체의 주소로 서칭하게 됩니다.
따라서 실제 pp라는 바구니의 내용물을 아래와 같이 살펴볼 수 있습니다.
이게 헷갈리면 아래 조사식이랑 같이 살펴보면 도움이 됩니다.
2021. 10. 08. 16:43
제가 지금까지 메모리창 사용법을 잘 못 알고 있었네요. 이제 확실히 알겠어요!
스샷까지 첨부해 주시고 알기 쉽게 설명해 주셔서 정말 감사합니다! :)