인프런 커뮤니티 질문&답변
작성자 없음
작성자 정보가 삭제된 글입니다.
delete 전과 후의 주소값이 동일한 이유가 궁금합니다.
해결된 질문
작성
·
296
0
6.11 강의 중 아래 코드에서 궁금한 점이 있습니다.
delete를 통해 ptr의 메모리를 해제한 후에 ptr 에 nullptr을 넣어주면 다른 메모리를 할당 받는 걸로 이해하고 있었는데,
출력해보니 delete 하기 전과 후의 ptr의 주소값이 같습니다. 제가 잘못 이해한 부분이 있는 것 같은데,
delete 후에 ptr의 주소값이 변하지 않는 이유에 대해 알려주시면 감사하겠습니다!
퀴즈
여러 개의 동일 자료형 데이터를 효율적으로 관리하기 위한 방법은 무엇일까요?
개별 변수 사용
배열 활용
상수 선언
포인터만 사용
답변 2
6
delete 를 통해 해제한건 ptr 을 해제한게 아니라 ptr 이 가리키던 메모리를 해제한 것입니다!
동적 할당을 받고 그 할당받은 메모리의 주소를 ptr 포인터 변수에 담아서 저장했던건데 delete ptr; 은 ptr 이 가리키고 있는 동적 할당받은 메모리를 해제하라는 것입니다.
예를 들자면 동적 할당받은 메모리의 이름이 A 라고 해볼게요. 그러면 ptr 의 '값'은 &A 인 것입니다. delete ptr; 은 이 A 를 해제시켜주는것이지 ptr 을 없앤다거나 하는게 아닙니다! delete ptr; 하고나면 ptr 은 없어져버린 공간의 주소값을 가지게 되는 것이기 때문에 ptr = NULL; 해주는 것이기도 하구요! ptr 은 변함없이 그대로 존재하니 당연히 &ptr 은 변함이 없는 것입니다. 집이 사라진것 뿐이지 집주소를 적은 종이는 그대로 존재해요. (&ptr 은 집주소(&A)를 적은 종이의 주소! 인 셈입니다.)
ptr 은 포인터변수일 뿐입니다. 구분해서 생각하셔야해요~!
0





