inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

C 와 C++ 을 동시에 배워보자 - 두들낙서의 C/C++

68강. 깊은 복사와 얕은 복사 (3) - 대입 연산자 오버로딩

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

530

YK

작성한 질문수 1

0

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

 

String s3("Hello");

s3.operator=(s1);

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

c++

답변 1

0

인프런 AI 인턴

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

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

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

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

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

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

안녕하세요 Rookiss님 기본기를 다지고 있는 대학생입니다.

0

49

2

8-2. 단항 연산자 중복 : 전위 ++ 연산자 작성 질문

0

39

1

코딩살구클럽 가입문의

0

46

2

메타휴먼 적용 관련 질문입니다

0

62

1

3-K private case 질문

0

49

2

안녕하세요. 코딩살구클럽 문의드립니다!

0

69

2

스프링 암 조절을 임의로 진행해도 강의를 따라갈 수 있나요?

0

66

2

숙제 노션 링크 안들어가집니다

0

53

1

7:41 듣다가 질문합니다

0

63

2

코드 리뷰 요청드립니다!

0

61

2

코딩살구클럽 계정 문의

0

63

2

SK하이닉스 대비 강의수강

0

189

3

코딩살구클럽 등록부탁드립니다.

0

62

2

7-F 재귀로 풀시 런타임애러

0

59

1

1-N 문제 질문입니다. (+ 채점오류)

0

65

2

코딩살구클럽 가입 확인 부탁드립니다.

0

79

2

직장인 코테 합격 공부방법 문의

0

107

2

게임 에셋 질문

0

96

1

코딩살구클럽 가입 방법

0

87

2

실습환경(비쥬얼스튜디오)에 대한 질문입니다.

0

71

1

6-H 체점 관련 질문

0

66

1

채점서버 연결 관련 질문입니다

0

97

2

삼성 s직군

0

81

1

float 출력관련 질문

0

326

1