• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

메모리 재할당 시 같은주소로 할당됨

23.06.26 13:58 작성 조회수 322

0

68강을 수강하면서 코드를 작성하였는데

 

String s3("Hello");

s3.operator=(s1);

에서 분명히 기존의 strData의 메모리를 delete 하고 재할당하였는데 찍히는 주소가 계속 같게나옵니다.

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.06.27

안녕하세요, 인프런 AI 인턴입니다.

코드를 보면 operator= 함수가 호출될 때, 얕은 복사가 아닌 깊은 복사가 일어나도록 구현이 되어 있어야 합니다. 그런데 메모리를 delete하고 재할당하는 것은 깊은 복사가 아니라 메모리를 초기화하고 덮어쓰는 것이기 때문에, 이로 인해 코드에서 문제가 발생한 것으로 추정됩니다.

따라서 s3.operator=(s1); 코드를 깊은 복사를 할 수 있도록 코드를 수정해보세요.

또한, 같은 주소로 할당되는 이유는 C++의 다이내믹할당을 하면 메모리를 동적으로 할당한 후 메모리의 주소가 남아있기 때문입니다. 이를 해결하기 위해서는 할당할 때마다 new를 이용하여 동적으로 할당해주면 됩니다.

추가적으로, 해당 질문은 68강의 내용과 관련된 것이므로, 궁금한 내용이 있다면 해당 강의 Q&A에 질문을 남겨보시는 것도 좋을 것 같습니다.

좋은 결과 있기를 바랍니다. 감사합니다.