inflearn logo
강의

Course

Instructor

Let's learn C and C++ at the same time - Doodle Doodle's C/C++

Lecture 68. Deep Copy and Shallow Copy (3) - Overloading Assignment Operator

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

487

YK

1 asked

0

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

 

String s3("Hello");

s3.operator=(s1);

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

c++

Answer 1

0

communityai8509

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

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

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

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

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

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

Reticle이 안나옵니다.

0

6

1

진행 방법 질문드립니다!

0

26

2

Singleton 관련 질문입니다.

1

27

2

2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.

0

54

2

AddGameFrameworkComponentReceiver vs AddExtensionHandler

0

23

0

2주차 개념#12 트리 순회

0

25

2

백준 사이트 서비스 종료

0

111

3

프로젝트 질문 문의

0

45

1

백준사이트가 종료된다고 합니다.

0

284

2

맵핑부분..

0

33

2

백준 서비스 종료

9

881

1

ABP "스테이트의 시퀀스 플레이어에 따른 자동 규칙"질문드립니다.

0

38

1

사용하시는 툴 질문 드립니다.

0

38

2

sk 하이닉스 코테 대비

0

367

2

3-G 최댓값 질문

0

50

1

문제집은 없나요 수업을 어떻게 들어야 할지 모르겠어요

0

107

2

모듈러 연산 값이 10이 아닌 경우도 있지 않나요?

0

83

2

3-I 코드 질문드립니다.

0

62

2

3-N 질문 있습니다.

0

66

2

동적배열 Vector의 push_back 함수에서 조건문 질문

0

75

1

맥북 비주얼 스튜디오 커뮤니티 다운 불가

0

60

3

학습방법

0

102

2

4-H 질문 있습니다 (코드 리뷰)

0

66

2

float 출력관련 질문

0

269

1