kjuny00   1년 전

안녕하세요, 문제를 억지로 풀긴 했는데 뭔가 마음에 안 들어서 질문 드립니다.

일단 문제를 푼 방식은 node를 이전에 int만 저장하던 거에서 node 식으로 이전 node의 포인터를 prev에 저장하여 이전 값을 기억해서 마지막에 값을 바꾼 시점에 따라 최종 배열을 출력하도록 하였습니다.

근데 그 방법에서 41, 42 번째 줄에서 이전 node를 기억하고 벡터에서 그 자리 값을 새로운 노드로 바꾸고 싶었는데 이게 구현이 잘 안되서 지저분하게 새로운 노드를 그냥 만들어도 보고 하다가 결국에 그냥 new를 붙여봤더니 성공했습니다. 저도 잘 알고 하는게 아니라서 이게 왜 그냥 new 없이 하면 나중에 다른 노드의 이전 노드 cop을 만들때 다 바뀌는 것 같은데 왜 그러는 건지 궁금합니다.

제가 추리하는 바로는 new없이 그냥 node로 만들면 계속 같은 메모리에 생성되서 그 자리에 있던 값들이 나중에 바뀌면 이전에 그 메모리를 저장한 포인터에 따라 마지막에 바뀐 값이 되는 거고 new를 붙히면 아예 다른 메모리에 만들어져서 괜찮은 거라고 추리해봤는데 맞나요?

그래서 일단은 new로 만들어보고 실행했더니 맞긴 했는데 new를 사용하면 delete로 free를 시켜줘야 된다고 알고 있는데 새로 만든 structure는 어떻게 delete해줘야 하나요?

그리고 제 코드가 맘에 안드는데 어떻게 하면 더 괜찮게 만들 수 있을지 제 코드에서 고쳐보면 좋을 것 같은 점 알려주시면 감사드리겠습니다.

댓글을 작성하려면 로그인해야 합니다.