c++ 포인터에 대해서 질문드립니다!

조회수 440회

안녕하세요.

링크드 리스트로 스택을 구현하다가 궁금증이 생겼습니다.

저는 pop연산을 하면 pop 될 데이터를 갖고 있는 노드의 메모리를 해제하게 구현을 했습니다.

top 바로 아래에 있던 요소의 포인터는 다음 노드의 메모리가 해제되었으므로 NULL 값을 갖게 되나요?

아니면 메모리는 해제되었지만 가르키고 있던 그 주소값을 그대로 가지고 있나요?

만약, 주소값을 그대로 갖고 있다면, 그 포인터가 NULL을 가리키도록 하는 방법 중 직접 대입하는 방법 말고 다른 방법을 알고 싶습니다!

감사합니다!! :)

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • top 바로 아래에 있던 요소의 포인터는 다음 노드의 메모리가 해제되었으므로 NULL 값을 갖게 되나요? 아니면 메모리는 해제되었지만 가르키고 있던 그 주소값을 그대로 가지고 있나요?

    먼저 포인터는 변수입니다. 코드상에서 쓰이는 다른 변수들처럼 값을 가지고 있는 것이고 그 값이 메모리 상의 위치라는 의미를 가지고 있을 뿐입니다. 즉 메모리를 헤제한다고 포인터의 값이 바뀌지는 않습니다. 직접 바꾸지 않는 이상 계속 그 값을 유지하고 있을 것입니다.

    만약, 주소값을 그대로 갖고 있다면, 그 포인터가 NULL을 가리키도록 하는 방법 중 직접 대입하는 방법 말고 다른 방법을 알고 싶습니다!

    앞에서 포인터는 변수라고 했는데, 변수에 값을 바꿀 때 직접 대입을 해야 합니다. 그러면 어떤 방법을 원하시는 건가요?

    아니면 c++ 스타일로는 top = nullptr로 표기하셔도 됩니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)