inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

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

509

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에 질문을 남겨보시는 것도 좋을 것 같습니다.

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

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

0

27

2

vs 디버그 옵션 설정

0

26

2

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

0

30

2

5-S 테스트 케이스 질문

0

34

2

코살 문제풀이 환경

0

48

2

2 - T 오큰수 문제가 있는 것 같습니다.

0

43

1

추천 추가문제들

0

43

2

프로그래머스 코테 환경 관련해서 질문드립니다.

0

47

2

해당 문제에 대한 채점이 코딩살구클럽에서 올바르게 처리되지 않습니다.

0

41

2

균형 이진 트리 설명 시 높이 숫자

0

31

2

4-H 질문드립니다.

0

35

2

1-K 질문드립니다.

0

41

2

대기업 인적성 시험 질문

0

41

2

4-C 질문드립니다

0

41

2

[수학숙제 / BOJ 2870] 채점 서버 오작동

0

37

1

코테 준비 질문

0

50

1

살구클럽가입 요청드려요

0

39

2

1-I 문제 질문

0

40

2

코딩살구클럽 가입

0

57

2

코딩살구클럽 오류

0

61

2

코살클 [3-F 괄호 추가하기] 프라이빗 9번 제보

0

46

1

코딩살구클럽 테스트 케이스 오류 제보

0

52

2

삼성 코딩테스트

0

65

2

float 출력관련 질문

0

301

1